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

上記のコードは、stopSPinner がイベントを受け取ると実行されるように機能します。しかし、私の要件はもう少し複雑です。関数を実行する前に、2 つの異なるイベントが受信されるのを待ちたいと思います。イベントの順序は異なる可能性がありますが、両方のイベントが発生した場合にのみ実行するように機能したいと考えています。どうすればこれを達成できますか

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 つの非同期タスクが 1 つの関数で完了するのを待つことができます。

于 2016-08-16T19:08:17.007 に答える