gpt4 book ai didi

javascript - 使用 promise 异步递归

转载 作者:数据小太阳 更新时间:2023-10-29 06:15:31 33 4
gpt4 key购买 nike

所以我试图将我的代码转移到“Promise 世界”,并且在许多地方当我不得不使用异步功能“循环”时 - 我只是以这种方式使用递归

function doRecursion(idx,callback){
if(idx < someArray.length){
doAsync(function(){
doRecursion(++idx,callback)
});
}else{
callback('done!')
}
}
doRecursion(0,function(msg){
//...
});

现在我正在尝试改变 Promise 世界,但我很困

var Promise = require('bluebird')
function doRecursion(idx){
return new Promise(function(resolve){
if(idx < someArray.length){
doAsync(function(){
//... doRecursion(++idx)
// how do i call doRecusion here....
});
}else{
resolve('done!')
}
});
}
doRecursion(0).then(function(msg){
//...
});

谢谢。

最佳答案

我会选择 Promise.all 方法。

它所做的是等待数组中的所有 promise 都已解决。该 map 会将异步方法应用于数组中的每个项目并返回一个 promise 。

function doAsyncP() {
return new Promise((resolve) => {
doAsync(function() {
resolve();
});
});
}

Promise.all(
someArray.map(doAsyncP)
).then((msg) => {
//we're done.
});

关于javascript - 使用 promise 异步递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35553454/

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