javascript - 多次异步调用后的回调方法

标签 javascript angularjs asynchronous

有没有办法在执行一行代码之前等待多个 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/

相关文章:

javascript - 使用 rxjs 时如何获取错误的堆栈跟踪?

javascript - 使用 React 减少多个按钮的代码冗余

javascript - AngularJS Scope.on 和scope.emit 在过滤器中的调用顺序

angularjs - Angular : Reinclude null values when filter parameter is empty

javascript - angularJS 服务 - 返回检索数据和管理数据对象的 promise ?

node.js - 如何在一个 get 请求中返回多个 Mongoose 集合?

javascript - "Show more"链接以将更多文本附加到页面?

javascript - daterangepicker 未设置日期

ios - 在我的应用程序中向左/向右滑动会触发将数据保存到我的数据库的操作。然而,快速滑动会导致许多保存失败

c# - .NET 4.5 中的 WPF 异步事件处理程序无响应