让Angular-JS在继续之前等待异步调用有问题
Trouble getting Angular-JS to wait for async call before proceeding
所以我知道你需要在Angular中使用承诺来管理异步,但我不太确定如何在这个实例中做到这一点。
function getLineGraphData(promises){
var points = [];
for (var i = 0; i < promises.length; i++) {
$http.get('/file/tsDataPoints/'+promises[i].unit+"?startDate="+promises[i].startTs+"&endDate="+promises[i].endTs+"&startState="+promises[i].startState+"&endState="+promises[i].endState).success(function(data){
points.push(data);
console.log(data);
});
}
console.log(points);
return points;
}
我认为是什么让我离开这里是我用来建立我的查询的数据是在一个数组。所以我不需要从一个请求中获取返回。会有几个。我需要做什么?举例会有帮助。谢谢。
$http返回一个承诺。问美元。All接受承诺数组,并在所有承诺都被解决时进行解决。所以可以:
promises = promises.map(function(promise){
return $http.get('/file/tsDataPoints/'+promise.unit+"?startDate="+promise.startTs+"&endDate="+promise.endTs+"&startState="+promise.startState+"&endState="+promise.endState);
});
$q.all(promises).then(function(resultsArray){
console.log(resultsArray); // array of results of all your $http's
});
乌利希期刊指南:
如果你需要从你的函数中返回,你可以
function getLineGraphData(promises){
promises = promises.map(function(promise){
return $http.get('/file/tsDataPoints/'+promise.unit+"?startDate="+promise.startTs+"&endDate="+promise.endTs+"&startState="+promise.startState+"&endState="+promise.endState);
});
return $q.all(promises);
}
然后这样命名
getLineGraphData(promisesArr).then(function(resultsArray){
// do your stuff
});
相关文章:
- 在等待异步任务时永久循环
- 如何等待异步请求完成
- 等待异步结果的 Chrome 系统调用
- 请等待异步操作 (firebase) 调用完成,然后再加载网页
- Jasmine - 等待异步库完全加载,然后再执行测试
- 是否可以让其他 javascript 事件侦听器等待异步事件
- 等待异步 Javascript 函数结束检索结果(延迟?)
- 如何等待异步回调函数集
- 什么'这是让函数返回等待异步操作完成的最佳方法
- ExtJS 4拖放等待异步操作,然后再决定是否完成拖放
- Parse.com等待异步出现问题
- 力量角器's on准备等待异步http请求
- 等待异步函数完成而不添加回调
- 正在等待异步调用,无法使用ajax
- Javascript等待异步从Firebase检索数据
- Node.js:等待异步调用的响应
- 如何让Javascript在继续之前等待异步调用
- 等待异步函数完成后再继续
- 如何在调用回调之前等待异步创建的对象完全可用?
- 我如何在Javascript中等待异步事件