有没有办法在执行一行代码之前等待多个 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();
})
关于javascript - 多次异步调用后的回调方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46955613/