Node.js中的process.nextTick使用實例
我已經(jīng)不記得是在哪里第一次看到process.nextTick這個玩意的調(diào)用了,哦,應該是在nodejs官方的process文檔里看到的。當時就不理解這東西是干嘛的了,都已經(jīng)有setTimeout了,還需要這個函數(shù)干嘛。而且從根本上來說,這個函數(shù)又是干嘛的?和setTimeout有什么區(qū)別?
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);
}
簡單來說就是因為異步模型的關系,導致某些代碼的執(zhí)行可能先于它們所需要的條件完成之前,所以將這些需要先置條件的代碼放入到一個回調(diào)函數(shù)中,然后放入到下一個事件循環(huán)的頂層。那么這些代碼就不會被立刻執(zhí)行了,而是在下一輪事件啟動之前等待,啟動后在進行執(zhí)行。
相關文章
node.js中的events.emitter.listeners方法使用說明
這篇文章主要介紹了node.js中的events.emitter.listeners方法使用說明,本文介紹了events.emitter.listeners 的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12
在Linux上用forever實現(xiàn)Node.js項目自啟動
在一臺計算機上手動跑Node項目簡單,node xx.js就搞定了,想讓Node項目后臺運行,雖然不能直接用node命令搞定,但是在安裝了forever這個包以后,還是很輕松的。不過要是在遠程服務器上構建Node項目,如果沒法自啟動,一旦服務器重啟,那就麻煩了。2014-07-07
Node.js connect ECONNREFUSED錯誤解決辦法
這篇文章主要介紹了Node.js connect ECONNREFUSED錯誤解決辦法的相關資料,需要的朋友可以參考下2016-09-09

