2013-07-31 32 views
0

假設我有以下代碼:調用其中有異步語句中的函數(我應該在父母使用process.nextTick?)

foo(); 

function foo() { 
    func1("bla", function() { 
       console.log("done!"); 
       }); 
} 

function func1(value,callback) { 
     process.nextTick(callback); 
} 

將上面的功能將完全異步? 還是應該使用這個foo功能? :

function foo() { 
    process.nextTick(function() { 
          func1("bla", function() { 
          console.log("done!"); 
        }); 
} 

其實我的問題是,如果父母阻止子進程從異步?

回答

0

第一個選項將會是「異步」,因爲在調用回調方法之前,節點可能會做其他事情。

沒有必要調用第二種方法。只要你的foo函數完成,並且任何foo完成節點的父調用者都將開始執行其他工作,最終將成爲nextTick註冊的工作。

+0

所以你實際上說的是第一個選項可以使用,因爲「process.nextTick(回調)」將釋放事件循環來做其他的事情。當堆棧爲空時,它將執行回調。對 ? (第一個選項=我寫的第一個foo()函數) – ohadinho

+1

是的。在調用func1來測試它之前和之後,只需將一個console.log語句添加到您的foo()函數中即可。 – AndyD