所以,在JavaScript中,因为它的本质是事件驱动的,所以似乎setTimeout不会阻塞。这意味着,如果我这样做:javascript中的非阻塞setTimeout与ruby中的睡眠
setTimeout(function(){
console.log('sleeping');
}, 10);
console.log('prints first!!');
它将输出'prints first!!'
然后'sleeping'
。
js解释器不会等到setTimeout完成,而是立即执行下面的代码片段。当10ms通过时,它执行回调函数。
现在我最近一直在玩红宝石。我知道它在事件机器库中具有非阻塞支持。但是我不知道我们是否可以实现类似于setTimeout的例子,我用javascript写了sleep
或者本地没有事件机器支持的ruby中的任何函数?这完全可以使用闭包过程或块或任何东西?谢谢。
是的,它看起来不像线将会是我将使用的东西。我知道异步需要使用事件机器完成,但我只是好奇。谢谢 – 2012-02-16 04:35:40
线程触发异步回调的大问题是试图强制执行调用线程上的回调块。这很棘手,除非你有一个适当的事件循环,在那里有明确的地方来执行它们。 – tadman 2012-02-16 05:23:43