javascript / nodejs概念

我发现真的很难得到JScallback的概念。 我知道这是一个等待被其父母称呼的functionnetworking,但是这有什么优势呢? nodejs如何不被阻塞? 请问下面肯定会给“你好世界”还是它可能是第一个被称为? 是否nodejs切换上下文,因为它如何跨越函数等待被callback? 我明白这个问题没有很好的组织,因为我真的很困惑,更多的信息只是评论。

SomeProccess(function() { print("hello"); }); OtherProccess(function() { print("world"); ); 

这完全取决于代码是阻塞的还是非阻塞的。

如果代码被阻塞,那么SomeProcess将执行一些操作,然后调用打印“hello”的函数。 如果它是非阻塞的,这意味着它将控制传递给子stream程,或者将消息传递到stream中,然后在消息返回时再做其他事情。

 // Blocking function SomeProcess(cb) { for (var i = 0; i < 10; i++) { ... } cb(); } // Non blocking function SomeProcess(cb) { process.nextTick(cb); } 

如果function被阻塞,那么你可以向玩家订购。 如果没有阻塞,那么没有摄像头。

非阻塞:

  • process.nextTick
  • setTimeout / setInterval
  • child_process.spawn
  • stream

在node.js中,你可以假设所有的IO都是非阻塞的。 node.js内部有一个阻塞工作的队列。 (调用函数),一旦这个工作完成,它将返回到事件循环,并捕获一组新的阻塞工作,从而处理来自stream的传入消息或处理超时或处理process.nextTick事件。

有一点要注意的是, EventEmitter.emit是阻塞的,它将立即parsing所有的绑定事件处理程序。