在 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/