gpt4 book ai didi

javascript - 与 Q.all(promises) 同步解决 promise

转载 作者:行者123 更新时间:2023-12-03 04:48:02 29 4
gpt4 key购买 nike

我正在使用Kriskowal Q library处理 promise 。

我编写了以下函数来等待所有 promise 都得到解决。

function multiplePromises(targetArray) {
var promises = {};
for (var i=0; i<targetArray.length; i++) {
var promise = singlePromise(); // any async. function
promises[i] = promise;
};
return Q.all(promises);
};

我这样调用它:

multiplePromises(targetArray).then(
function(success){
console.log("success");
},
function(error){
console.log("error", error);
}
);

但是我想知道是否存在解决 promise 的顺序(例如,它是同步的吗?)。 IE。该函数是否会等待触发下一个 promise i+1 直到 promise i 得到解决?或者,它是否像所有其他异步一样。方法,它实际上会触发所有单个 promise 并只是等待它们全部完成?

如果是第二种情况,如何重写此函数以确保只有在 Promise i 得到解决后才会触发 Promise i+1

更新:测试

我做了一个测试并输入:

promises[i] = i;

检查它是否同步解析,看起来是这样。然而,可能只是我的异步函数足够快,能够如此快地实际解决它。这看起来正确吗?

最佳答案

有多种方法可以实现您想要的目标

对代码的最小更改是

function multiplePromises(targetArray) {
var promises = [];
var p = Promise.resolve(); // I don't know the Q equivalent of this
for (var i=0; i<targetArray.length; i++) {
p = p.then(function() {
return singlePromise();
});
promises[i] = p;
};
return Q.all(promises);
};

关于javascript - 与 Q.all(promises) 同步解决 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784829/

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