gpt4 book ai didi

Javascript - 在递归函数结束时延迟返回 Promise

转载 作者:行者123 更新时间:2023-11-30 20:16:42 24 4
gpt4 key购买 nike

我是 javascript 的新手,我试图在 Javascript 中创建一个递归函数,它应该在递归结束时返回一个 promise。但是,通过下面的代码片段,我得到了在单次迭代中返回的 promise 。

function delayedIteration(i) {
var promises = [];
var promise = new Promise(function(resolve, reject) {
if(i >= 10) {
return;
}
console.log("i: "+i);
i++;
setTimeout(delayedIteration.bind({}, i), 3000);
resolve("resolve");
});
promises.push(promise);
return Promise.all(promises);
}

我也试过添加,

setTimeout(promises.push(delayedIteration.bind({}, i)), 3000);

但是,这也无济于事。有人可以帮我解决这个问题吗。

最佳答案

您可以使用它们的 then 方法链接递归函数调用返回的 promise ,如下所示:

function delayedIteration(max, i = max + 1) {
return new Promise(resolve => {
if (i === 1) {
resolve();
return;
}
delayedIteration(max, --i).then(() =>
setTimeout(() => {
console.log(i);
resolve();
}, 3000)
);
})
}
delayedIteration(10);

请注意,我在这里从 max 数到 1,因为链式 then 语句末尾的 promise 首先被解析(可能有很多优化此代码的可能性😀)

参见 JSFiddle:https://jsfiddle.net/pahund/q4cuwse9/

关于Javascript - 在递归函数结束时延迟返回 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51856092/

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