gpt4 book ai didi

javascript - 具有延迟的nodejs异步循环

转载 作者:行者123 更新时间:2023-11-30 11:10:31 25 4
gpt4 key购买 nike

当任务按计划花费更长的时间时,我正在尝试让循环以更长的延迟工作。

目前我在循环中使用这段代码:

async function doSomeStuff() {
// do some stuff
// sometimes this action may take longer than 5 seconds
// after finishing wait 5 seconds
console.log('task completed, waiting 5 seconds for next run...');
}

setInterval(doSomeStuff, 5000);

工作起来很神奇,但延迟固定为 5 秒,即使任务按计划花费更长时间,因此有时新循环在完成最后一个任务后仅 1 秒开始,而不是等待 5 秒。

不幸的是,我无法通过查看其他问题自行解决。

我很感激任何帮助。

最好的问候贝达

最佳答案

async 函数不应与忽略它返回的 promise 的 API 一起使用,例如 setInterval,以防应该链接 promise 。

这可以通过递归 async 函数来完成:

(async function doSomeStuff() {
await new Promise(resolve => setTimeout(resolve, 5000));
// do some stuff
await doSomeStuff();
})();

或者无限循环:

(async function doSomeStuff() {
while (true) {
await new Promise(resolve => setTimeout(resolve, 5000));
// do some stuff
}
})();

如果需要处理错误,函数体可以用 try..catch 包裹。

关于javascript - 具有延迟的nodejs异步循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53904732/

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