节点设置超时不工作
Node setTimeout notWorking
function work(){
//do some of the heavy computation now
process.nextTick(work);
}
work();
console.log("started");
setTimeout(function(){ console.log("hi there");}, 1000);
当我运行他的代码时,我得到:开始,但我从来没有收到消息嗨。我做错了什么,还是节点的问题?
编辑: 当我用setTimeout替换process.nextTick时,它可以工作,但是nextTick应该更快,或者当我用process.nextTick((替换setTimeout时,你好显示,但它不会等待1000ms。
使用setInstant是要走的路
function work(){
setImmediate(work);
}
work();
console.log("started");
setTimeout(function(){ console.log("hi there");}, 1000);
Node.js 使用事件循环,(简单地说(它将运行任何代码,直到它返回,然后运行其队列中的下一件事。 process.nextTick()
将您传递给它的函数设置为该队列中的下一件事。 setTimeout(foo, x)
会告诉它在 x
毫秒内将您传递给队列的函数添加到队列中。
您的代码正在将work
添加为队列中的下一件事,然后完成,因此 node 运行 work
函数,该函数执行某些操作,然后将work
添加为队列中的下一件事,这将永远持续下去。在某个时候,计时器结束并将您的日志添加到队列中,但由于nextTick
总是将work
添加为队列中的第一件事,因此它从未真正拾取它。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 设置超时如何工作
- 我的设置超时无法正常工作
- 为什么我的 $state.go 仅在设置超时内工作
- 为什么“设置超时”不能正常工作
- Marquee没有'在所有计算机系统上,设置超时不能正常工作
- 由于回调结构中可能存在错误,无法使超时工作
- 节点设置超时不工作
- 似乎无法设置超时工作
- 为什么这会设置超时();功能不像我认为的那样工作
- 设置超时无法正常工作
- ajax post请求超时不工作
- ngShow 未按预期工作超时
- CSS转换don'除非我超时,否则我无法工作