Nodejs:什么时候执行tick

时间:2012-09-09 19:26:33

标签: node.js asynchronous

Nodejs有一个方法process.nextTick(fn),它将函数的执行延迟到下一个滴答。根据{{​​3}},这可以用于在像这样的对象的构造函数中发出事件(从artice复制):

function StreamLibrary(resourceName) {      
    var self = this;

    process.nextTick(function() {
        self.emit('start');
    });

}

var stream = new StreamLibrary('fooResource');

stream.on('start', function() {
    console.log('Reading has started');
});

如果没有process.nextTick,这将不起作用,因为事件将在您有机会收听事件之前发出。但是,如何在添加事件侦听器之前确定不会发出事件?如果它完全异步,则有可能在构造函数结束之前执行下一个tick,因此忽略事件侦听器。那么这个过程背后的规则是什么?节点何时执行nextTick?

1 个答案:

答案 0 :(得分:3)

下一个勾选执行...下一个勾选。我认为这里的混淆是“完全异步”的意思。

使用Node.js,您的所有代码都在一个线程上运行。在当前刻度结束之前,不会执行下一个计划的代码。

因此,当您从构造函数中的下一个tick发出事件时,可能附加处理程序的代码将在下一个tick发生之前完成执行。

Node的异步和多线程部分具有处理操作,如网络和IO。这些函数调用在JavaScript代码运行时运行,但是当数据传递回代码时,它将在下一个滴答之前运行。