-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 асинхронной задачи завершить в одной функции.