递归函数不解决条件和SetTimeout



挑战说明

尝试实现包含setTimeout和promise的递归函数的代码段失败。递归和setTimeout可以工作,但承诺似乎没有解决,因为在projectMGR()中配置的中没有消息输出。

解决方案尝试广泛审查执行上下文,各种承诺解析方法,MDN练习和审查堆栈溢出解决方案已被证明是不成功的。此外,已经尝试将对递归函数的调用包装在async中(正如当前配置的那样),也直接在GEC中配置承诺。

堆栈溢出

解决方案1解决方案2解决方案3

如有任何意见或协助,不胜感激。


预期输出实际输出
还有10个…还有10个…
还有9个…还有9个…
还有8个…
还有7个…还有7个…
还有6个…
还有5个…还有5个…
还有4个…
还有3个…还有3个…
还有2个…还有2个…
还有1个…
正好赶上欢乐时光!🍻.

这样效果更好。还有,一定要记得在定义函数或变量之后再使用它们。

async function recursiveInterval(arr, n, ms = 1000) {
if (n === 0) {
return 'Finished just in time for Happy Hour!🍻.';
} else {
console.log(`${n} more to go...`);
await new Promise(res => { setTimeout(res, ms); });
const t = await recursiveInterval(arr, n - 1);
return t;
}
};
async function projectMGR() {
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let n = arr.length;
await recursiveInterval(arr, n)
.then((resolve) => console.log(resolve))
}
projectMGR();

最新更新