2015-04-17 24 views
3

如何在$interval完成後確保函數runAfterLoopFinishes()運行?現在它在循環首次定義之後立即運行。

var loop = $interval(function() { 
    // Do something great 10 times 
}, 1000, 10); 

// To run after looping 
runAfterLoopFinishes(); 

回答

9

$interval返回承諾。

var loop = $interval(function() { 
    // Do something great 10 times 
}, 1000, 10); 

loop.then(function(){ 
    // To run after looping 
    runAfterLoopFinishes(); 
} 

$interval承諾將在每次迭代後得到通知,但在最後的唯一的解決。

-1

如果你想確保函數b運行後運行,async將有助於控制它。

async.series([ 
    function(callback){  // function a 
     // do some stuff ... 
     callback(null, 'one'); 
    }, 
    function(callback){  // function b 
     // do some more stuff ... 
     callback(null, 'two'); 
    } 
], 
function(err, results){ 
          // results 
}); 
+2

AngularJS的'$ interval'返回一個承諾 - 使用它比使用圍繞Node類型的回調設計的異步庫更直截了當。 –