【问题标题】:invoke a function after two events have been triggered在触发两个事件后调用函数
【发布时间】:2016-08-16 18:36:56
【问题描述】:
  $scope.$on("stopSpinner", function() {
        $('body').mask('hide');
    });

上述代码的工作原理是当 stopSPinner 是事件被接收时,它会执行。但我的要求涉及更多。我想在执行一个函数之前等待两个不同的事件接收。事件的顺序可能不同,但我希望仅在两个事件都发生后才执行。怎样才能做到这一点

【问题讨论】:

    标签: angularjs events event-handling broadcast angularjs-rootscope


    【解决方案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 个异步任务完成。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2013-05-31
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      相关资源
      最近更新 更多