-1
$scope.$on("stopSpinner", function() {
$('body').mask('hide');
});
上面的代码工作,当stopSPinner事件被接收时,它会执行。但我的要求是更多的参与。我想在执行一个函数之前等待两个不同的事件。事件的顺序可能不同,但我希望只有在两个事件都发生后才能执行。这可怎么achived两个事件触发后调用函数
$scope.$on("stopSpinner", function() {
$('body').mask('hide');
});
上面的代码工作,当stopSPinner事件被接收时,它会执行。但我的要求是更多的参与。我想在执行一个函数之前等待两个不同的事件。事件的顺序可能不同,但我希望只有在两个事件都发生后才能执行。这可怎么achived两个事件触发后调用函数
使用$ 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异步任务在一个单一的功能来完成。