首頁  >  文章  >  web前端  >  Node.js中的process.nextTick使用實例

Node.js中的process.nextTick使用實例

高洛峰
高洛峰原創
2016-12-26 09:16:301529瀏覽

我已經不記得是在哪裡第一次看到process.nextTick這個玩意的調用了,哦,應該是在nodejs官方的process文檔裡看到的。當時就不懂這東西是幹嘛的了,而且都已經有setTimeout了,還需要這個函數幹嘛。而且從根本上來說,這個函數又是幹嘛的?和setTimeout有什麼差別?

stackoverflow上有一個非常好的帖子基本上解釋了我的問題,這裡我附上鏈接,然後給出它裡面的範例:

stackoverflow.com >> What are the proper use cases for process.nextTick in Node.js?

var MyConstructor = function() {
 ...
 process.nextTick(function() {
  self._continue();
 });
};
  
MyConstructor.prototype.__proto__ = EventEmitter.prototype;
  
MyConstructor.prototype._continue = function() {
 // without the process.nextTick
 // these events would be emitted immediately
 // with no listeners. they would be lost.
 this.emit('data', 'hello');
 this.emit('data', 'world');
 this.emit('end');
};
  
function(req, res, next) {
 var c = new MyConstructor(...);
 c.on('data', function(data) {
  console.log(data);
 });
 c.on('end', next);
}

簡單來說就是因為非同步模型的關係,導致某些程式碼的執行可能先於它們所需的條件完成之前,所以將這些需要先置條件的程式碼放入到一個回呼函數中,然後放入到下一個事件循環的頂層。那麼這些程式碼就不會立刻執行了,而是在下一輪事件啟動前等待,啟動後在進行執行。

更多Node.js中的process.nextTick使用實例相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn