我目前正在尝试学习 nodejs,我正在做的一个小项目正在编写一个 API 来控制一些联网的 LED 灯。
控制 LED 的微处理器有一个处理延迟,我需要将发送到微 Controller 的命令间隔至少 100 毫秒。在 C# 中我习惯只调用 Thread.Sleep(time),但我在 node 中没有找到类似的功能。
我在 node 中找到了几个使用 setTimeout(...) 函数的解决方案,但是,这是异步的,不会阻塞线程(这是我在这种情况下需要的)。
有人知道阻塞 sleep 或延迟功能吗?最好是不只是旋转 CPU,并且精度为 +-10 毫秒的东西?
最佳答案
Node 本质上是异步的,这就是它的优点,所以你真的不应该阻塞线程,但由于这似乎是用于控制 LED 的项目,我还是会发布一个解决方法,即使它是不是一个很好的,不应该使用(说真的)。
while循环会阻塞线程,所以你可以创建自己的 sleep 函数
function sleep(time, callback) {
var stop = new Date().getTime();
while(new Date().getTime() < stop + time) {
;
}
callback();
}
用作
sleep(1000, function() {
// executes after one second, and blocks the thread
});
我认为这是阻塞线程(原则上)的唯一方法,使其在循环中保持忙碌,因为 Node 没有内置任何阻塞功能,因为它会破坏异步行为的目的。
关于javascript - 如何在阻塞的nodejs中创建 sleep /延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967006/