javascript - 处理多个 Promise 的结果

标签 javascript angularjs

在 Angular 1.X 应用程序中,如果我想处理两个 Promise 的结果,是否有比这更优雅的方法来实现它:

function doSomethingWithBothResults(result1, result2) {
  return result 1 + result2;
}

$http.get('/endpoint1').then(function (result1) {

  $http.get('/endpoint2').then(function (result2) {
    doSomethingWithBothResults(result1 + result2);
  });
});

虽然当只有 2 个 Promise 时这没什么问题,但数量较多时会导致深层嵌套,这令人不安。

最佳答案

您可以使用Promise.all为此。

您的代码片段将是这样的:

let promises = [];
promises.push($http.get('/endpoint1'));
promises.push($http.get('/endpoint2'));

Promise.all ( promises ).then ( function ( data ) {
    //Data from all the promises
} ).catch ( function ( error ) {
   //Error
} );

在回调函数中,data 是一个数组,其每个元素都包含 Promise 的解析值。此外,data 中元素的顺序与将它们插入数组的顺序相同。

如果您的 promise 彼此独立,这将很有用。如果他们需要先前 promise 的结果,那么链接就是最佳选择。此外,这将同时开始解决两个 promise ,而链接方法将等待一个 promise 解决,然后开始解决下一个 promise

关于javascript - 处理多个 Promise 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45375550/

相关文章:

javascript - 通过元素的子字符串环回过滤数组中的对象

javascript - 在 angularjs 中显示图像预览时出错

javascript - Angular Bootstrap UI 模式未显示

javascript - AngularJS 在引导后添加依赖项

javascript - AngularJS typeahead 调用 webapi

javascript - 找不到模块 : can't resolve 'moduleName' in react js

javascript - 传递给 requestAnimationFrame 调用的回调的时间错误

javascript - 最初在 md-datepicker 上显示占位符

javascript - $_SERVER ['HTTP_REFERER' ] 不工作

javascript - 如何在两个数组中找到匹配值?