如何使用$ emit来延迟在接下来的60秒内执行的函数?

时间:2016-02-24 13:31:07

标签: angularjs

在我的服务代码的一个区域,我有类似的东西:

update

在另一个代码区域,我有一个每60秒执行一次的函数:

 $rootScope.$emit('rootScope:success-response')

如果发出了rootScope:success-response'那么我怎么能阻止myFunc运行?在过去60秒?

1 个答案:

答案 0 :(得分:2)

一种方法是取消$interval,然后重新设置,但更有效的解决方案是保留上次发出的事件的时间戳,并将其与+Date()内的当前myFunc进行比较 - 如果时间戳是< 60秒,只需终止myFunc - return;

编辑:

$rootScope.$on('rootScope:success-response', function (){
    YourService.lastEmitted = +new Date(); // fast conversion Date to int
});

--- YourService:

lastEmitted = 1234567;
function myFunc(){ 
    if (lastEmitted < +new Date()){
        return;
    }
}