node.js process nextTick作用

process.nextTick(callback)的功能是爲事件循環設置一項任務,Node.js 會在
下次事件循環調響應時調用 callback。 
初學者很可能不理解這個函數的作用,有什麼任務不能在當下執行完,需要交給下次事
件循環響應來做呢?我們討論過,Node.js 適合 I/O 密集型的應用,而不是計算密集型的應用,
因爲一個 Node.js 進程只有一個線程,因此在任何時刻都只有一個事件在執行。如果這個事
件佔用大量的 CPU 時間,執行事件循環中的下一個事件就需要等待很久,因此 Node.js 的一
個編程原則就是儘量縮短每個事件的執行時間。process.nextTick() 提供了一個這樣的
工具,可以把複雜的工作拆散,變成一個個較小的事件。 
function doSomething(args, callback) { 
 somethingComplicated(args); 
 callback(); 

 
doSomething(function onEnd() { 
 compute(); 
}); 
 
我們假設 compute() 和 somethingComplicated() 是兩個較爲耗時的函數,以上
的程序在調用 doSomething() 時會先執行 somethingComplicated(),然後立即調用
回調函數,在 onEnd() 中又會執行 compute()。下面用 process.nextTick() 改寫上
面的程序: 
function doSomething(args, callback) { 
 somethingComplicated(args); 
 process.nextTick(callback); 

 
doSomething(function onEnd() { 
 compute(); 
}); 
改寫後的程序會把上面耗時的操作拆分爲兩個事件,減少每個事件的執行時間,提高事
件響應速度。 
不要使用setTimeout(fn,0)代替process.nextTick(callback),
前者比後者效率要低得多。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章