gpt4 book ai didi

node.js 暂停几秒钟

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:33 25 4
gpt4 key购买 nike

我希望我的node.js 程序每30 秒打印一次foo。所以我写了这样的代码:

let count = 0

function foo () {
console.log(`foo`)
count += 1
// do other things that takes about 20 seconds.
}

while (count < 10) {
console.log(`inside while loop`) // my screen keep printing `inside while loop` until "JavaScript heap out of memory" error
setTimeout(foo, 30000) // It looks like that `foo` is scheduled to be triggered after 30 seconds. Before it gets triggered, node.js program keeps doing other things.
}

这段代码没有达到我的预期。

看起来 foo 计划在 30 秒后触发。 在被触发之前,node.js 程序会继续做其他事情。

如何在 30 秒内暂停程序?

程序运行了几秒钟,然后由于 JavaScript 堆内存不足错误而崩溃。

sleep module不起作用。因为当它 sleep 时,foo 停止做我需要的事情。

最佳答案

这是因为 JavaScript 的异步特性

While 循环进行大量迭代并注册 setTimeout 回调。最好在每次回调执行后注册 setTimeout 回调。

let counter = 0;
function foo() {
console.log(`foo ${counter}`);
counter ++;
if (counter < 3) {
setTimeout(foo, 1000);
}
}
foo();

另一个选项是使用 setInterval 并检查是否需要取消回调的下一次执行。

关于node.js 暂停几秒钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47050134/

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