有没有办法在执行行代码之前等待多个API调用响应?
通常,我使用:
APIService.call(parameter).then(function(response) {
// Do things
callBack();
});
而且工作正常,在
callBack()
的答案后执行APIService.call()
。但是,假设我有3个不同的API调用,例如:
$scope.var1 = APIService.call1(parameter)
$scope.var2 = APIService.call2(parameter)
$scope.var3 = APIService.call3(parameter)
我希望在接听了3个电话之后(即最长的一个接听电话之后)调用我的回调。
我该怎么办?
我不想创建嵌套的
then
,因为我希望我的3个调用保持异步调用。这可行吗?
最佳答案
由于您正在使用AngularJS,因此可以使用$q.all。做类似的事情:
var promises = [];
promises.push(APIService.call1(parameter));
promises.push(APIService.call2(parameter));
promises.push(APIService.call3(parameter));
$q.all(promises).then(function (values) {
// you can access the response from each promise
$scope.var1 = values[0];
$scope.var2 = values[1];
$scope.var3 = values[2];
doSomething();
})