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)的頂層。那么這些代碼就不會被立刻執(zhí)行了,而是在下一輪事件啟動之前等待,啟動后在進(jìn)行執(zhí)行。
相關(guān)文章
ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例
本篇文章主要介紹了ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06淺談Node.js輕量級Web框架Express4.x使用指南
本篇文章主要介紹了淺談Node.js輕量級Web框架Express4.x使用指南,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05使用node+vue.js實(shí)現(xiàn)SPA應(yīng)用
這篇文章主要介紹了使用node+vue.js實(shí)現(xiàn)SPA應(yīng)用的相關(guān)資料,需要的朋友可以參考下2016-01-01node.js結(jié)合webSocket實(shí)現(xiàn)聊天室
于Node.js和WebSocket的聊天室,主要包括前端頁面,主要是用戶操作的頁面,還包括后臺數(shù)據(jù)通信以及邏輯處理,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08nodejs中sleep功能實(shí)現(xiàn)暫停幾秒的方法
本篇文章主要介紹了nodejs中sleep功能實(shí)現(xiàn)暫停幾秒的方法,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07Nodejs?連接?mysql時(shí)報(bào)Error:?Cannot?enqueue?Query?after?fa
這篇文章主要介紹了Nodejs?連接?mysql時(shí)報(bào)Error:?Cannot?enqueue?Query?after?fatal?error錯(cuò)誤的處理辦法,需要的朋友可以參考下2023-05-05