-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异步任务在一个单一的功能来完成。

相关问题