javascript - 在 $http.post 方法中复制数组
问题描述
$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);
});
...
}
推荐阅读
- java - 如何计算需要覆盖字符串的选项卡数
- sql - 电子商务结帐:何时何地在关系数据库中为购物车中的商品创建中间和最终订单
- javascript - 如何使页面的特定部分居中,使其与平滑滚动完美结合?
- c# - 使用 C# 创建文件
- reactjs - 我可以将 ref 存储在 Redux 存储中,还是被认为是不好的做法?
- mysql - 构建动态 SQL 查询以对有限制的记录进行排序
- php - 使用 ajax 和 jquery 的简单食物跟踪器
- javascript - 键“local_part”的重复条目“0-0”
- javascript - Codeceptjs 无法在不使用元素的情况下滚动/向下滑动
- python - 无法从 angel.co 网站抓取所有数据