【发布时间】:2014-09-01 02:20:48
【问题描述】:
所以我知道您需要在 Angular 中使用 Promise 来管理异步,但我不太确定在这种情况下如何做到这一点。
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;
}
我认为让我失望的是我用来构建查询的数据位于数组中。所以我不仅仅需要从一个请求中获得回报。会有几个。我需要做什么?例子会很有帮助。谢谢。
【问题讨论】:
-
你不能从这个函数返回
points数组并期望它包含来自异步请求的数据。 -
我知道,但是如何让点数组包含数据?
-
你不能。这是不可能的。它总是在 ajax 请求完成之前返回。相反,您需要返回一个承诺,或使用回调。
$q.all将有助于在所有请求完成后返回一个已解决的承诺。 -
好的。你有没有一个例子说明 promise 可以使用这种用法?
标签: javascript ajax angularjs