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

上面的代码在接收到 stopSPinner 事件时起作用,它会执行。但我的要求涉及更多。我想在执行一个函数之前等待两个不同的事件接收。事件的顺序可能不同,但我只想在两个事件都发生后才执行。如何做到这一点

4

1 回答 1

1

使用 $q.all 和 promises,像这样:

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 个异步任务完成。

于 2016-08-16T19:08:17.007 回答