$scope.$on("stopSpinner", function() {
$('body').mask('hide');
});
上面的代码在接收到 stopSPinner 事件时起作用,它会执行。但我的要求涉及更多。我想在执行一个函数之前等待两个不同的事件接收。事件的顺序可能不同,但我只想在两个事件都发生后才执行。如何做到这一点
$scope.$on("stopSpinner", function() {
$('body').mask('hide');
});
上面的代码在接收到 stopSPinner 事件时起作用,它会执行。但我的要求涉及更多。我想在执行一个函数之前等待两个不同的事件接收。事件的顺序可能不同,但我只想在两个事件都发生后才执行。如何做到这一点
使用 $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 个异步任务完成。