Node.js中的process.nextTick使用實(shí)例
我已經(jīng)不記得是在哪里第一次看到process.nextTick這個(gè)玩意的調(diào)用了,哦,應(yīng)該是在nodejs官方的process文檔里看到的。當(dāng)時(shí)就不理解這東西是干嘛的了,都已經(jīng)有setTimeout了,還需要這個(gè)函數(shù)干嘛。而且從根本上來說,這個(gè)函數(shù)又是干嘛的?和setTimeout有什么區(qū)別?
stackoverflow上有一個(gè)非常好的帖子基本上解釋了我的問題,這里我附上鏈接,然后給出它里面的范例:
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);
}
簡單來說就是因?yàn)楫惒侥P偷年P(guān)系,導(dǎo)致某些代碼的執(zhí)行可能先于它們所需要的條件完成之前,所以將這些需要先置條件的代碼放入到一個(gè)回調(diào)函數(shù)中,然后放入到下一個(gè)事件循環(huán)的頂層。那么這些代碼就不會(huì)被立刻執(zhí)行了,而是在下一輪事件啟動(dòng)之前等待,啟動(dòng)后在進(jìn)行執(zhí)行。
相關(guān)文章
node微信小程序登錄實(shí)現(xiàn)登錄的項(xiàng)目實(shí)踐
登陸流程是指小程序用戶進(jìn)行授權(quán)登陸,即獲取用戶的微信賬號(hào)等信息本文就來介紹一下node微信小程序登錄實(shí)現(xiàn)登錄,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Node.js進(jìn)行串口通信的實(shí)現(xiàn)示例
本文主要介紹了Node.js進(jìn)行串口通信的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
node.js中的events.emitter.listeners方法使用說明
這篇文章主要介紹了node.js中的events.emitter.listeners方法使用說明,本文介紹了events.emitter.listeners 的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
在Linux上用forever實(shí)現(xiàn)Node.js項(xiàng)目自啟動(dòng)
在一臺(tái)計(jì)算機(jī)上手動(dòng)跑Node項(xiàng)目簡單,node xx.js就搞定了,想讓Node項(xiàng)目后臺(tái)運(yùn)行,雖然不能直接用node命令搞定,但是在安裝了forever這個(gè)包以后,還是很輕松的。不過要是在遠(yuǎn)程服務(wù)器上構(gòu)建Node項(xiàng)目,如果沒法自啟動(dòng),一旦服務(wù)器重啟,那就麻煩了。2014-07-07
Node.js connect ECONNREFUSED錯(cuò)誤解決辦法
這篇文章主要介紹了Node.js connect ECONNREFUSED錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-09-09

