2015-08-18 16 views
0
var i = 0; 
async.whilst(
    function(){ return i < 5; }, 

    function(cb) { 
     setTimeout(function() { 
      console.log(i++); 
      cb(); 
     }, 1000); 
    }, 

    function(err) { console.err("we encountered an error", err); } 
); 

我看到這個代碼在另一個堆棧溢出後,並有點困惑這種異步調用的語法。在async.as裏面有一個帶參數cb:function(cb)的函數。然後在setTimeOut調用cb()被調用之後,在該函數內部。我的問題是cb()回調函數是什麼?它是否只是調用:Async.whirlback回到哪個函數

function(){ return i < 5; } 

或者它是否再次調用函數(cb)?

回答

1

它回調到async的內部函數,該函數將停止循環(如果cb()傳遞錯誤),或者將隨後啓動循環的另一次迭代。

如果你看看the implementationnext變量是傳遞給迭代器函數的回調函數。

+0

所以它回調在這一行:function(){return i <5}?我真的不知道var next = _restParam(function(err,args){...});意味着在實施。 – CapturedTree

+0

@JohnClaydet'next'是通過(並由您的代碼調用)的回調。 – robertklep

相關問題