2015-04-17 2 views
3

Как я могу убедиться, что функция runAfterLoopFinishes() работает после завершения $interval? Прямо сейчас он запускается сразу после первого определения цикла.

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

«$ interval» AngularJS возвращает обещание - использование этого гораздо более прямолинейно, чем использование асинхронной библиотеки, которая разработана для обратных вызовов в стиле Node. –