为什么在nodejs中睡觉并不像预期的那样工作

时间:2016-08-08 14:00:34

标签: javascript node.js sleep

我使用这个library在循环中睡觉,我的循环看起来像这样

while(condition){
    usleep(1)
    while(condition){
        usleep(1)
        // ... do stuff (sync)
    }
}
虽然我只睡了1us,但循环永远不会终止它只需要很长时间,但是当我删除睡眠声明时,它只是运行并完成。

我试着睡觉让CPU平静下来而不是100%使用,所以服务器继续接受其他请求!

在循环中使用setTimeout不是一个好主意,因为setTimeout是异步的。

我认为使用递归,但我担心它会太慢,我会迭代100000

2 个答案:

答案 0 :(得分:3)

Sleep会阻止当前线程,因此这实际上无法帮助您尝试接受其他请求。您可以尝试sleep-async之类的工作来完成这项工作。

答案 1 :(得分:0)

如果您确实需要按原样保留该代码,请使用Promises和async/await。这样,您的应用程序将不会因其他请求而被阻止。

类似的东西让您开始:

assert