This question already has answers here:
How do I return the response from an asynchronous call?
(36个答案)
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
(6个答案)
在11个月前关闭。
我不完全理解为什么post方法中的数据充满内容,而外部没有。是因为函数内部和外部的变量作用域?
以及如何将内容复制到外部范围?
(36个答案)
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference
(6个答案)
在11个月前关闭。
$scope.openDocImg = function(id, e){
var data = [];
...
$http.post("/showDocument", cid).then(function(response){
data = response.data.slice(0);
console.log(data);
});
console.log(data.length); //displays 0
console.log(data);
...
}
我不完全理解为什么post方法中的数据充满内容,而外部没有。是因为函数内部和外部的变量作用域?
以及如何将内容复制到外部范围?
最佳答案
由于$http.post
方法是异步执行的,因此,在从服务器接收响应之前,将执行console.log(data.length);
语句。
因此,这就是为什么当您尝试记录0
的长度时收到data
的原因。
您应该使用callback
函数。
function postRequest(callback){
$http.post("/showDocument", cid).then(function(response){
callback(response.data.slice(0));
});
}
$scope.openDocImg = function(id, e){
var data = [];
...
postRequest(function(data){
console.log(data.length);
console.log(data);
});
...
}
关于javascript - 在$ http.post方法中复制数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54074669/
10-11 11:33