但一个异步调用开始的时候 主线程产生了一个任务,并且订阅了这个任务的完成事件。然后把这个任务扔给工作线程去做,当工作线程执行完以后会触发这个任务的完成事件,通知主线程。然后主线程的下一个tick会检测到这个事件,然后调用这个任务的回调方法。我这个理解对不对? 也就是说事件的触发是在工作线程 事件的响应在主线程。 请赐教。
下面信息来自官方文档 http://nodejs.cn/doc/node/events.html#events_emitter_emit_eventname_arg1_arg2
emitter.emit(eventName[, arg1][, arg2][, …])
Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.
Returns true if the event had listeners, false otherwise. 也就是说,emit事件是同步的,即立刻执行; 当然也可以实现成Next Tick执行,通过调用process.nextTick(){ callback(param) }形式即可。