gpt4 book ai didi

javascript - 处理多个 Promise 的结果

转载 作者:行者123 更新时间:2023-11-28 17:51:47 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com