-1
$scope.$on("stopSpinner", function() { 
     $('body').mask('hide'); 
    }); 

上面的代碼工作,當stopSPinner事件被接收時,它會執行。但我的要求是更多的參與。我想在執行一個函數之前等待兩個不同的事件。事件的順序可能不同,但我希望只有在兩個事件都發生後才能執行。這可怎麼achived兩個事件觸發後調用函數

回答

1

使用$ q.all和承諾,像這樣:

var deferred1 = $q.defer(); 
$scope.$on("stopSpinner", function() 
{ 
    $('body').mask('hide'); 
    deferred1.resolve(); 
}); 

var deferred2 = $q.defer(); 
$scope.$on("event2", function() 
{ 
    $('body').mask('hide'); 
    deferred2.resolve(); 
}); 

$q.all([deferred1, deferred2]).then(
function(){ 
    //your code after the 2 events... 

}) 

這樣一來,你就可以等待2異步任務在一個單一的功能來完成。

相關問題