Angularjs 如何使用$emit将函数执行延迟60秒?

Angularjs 如何使用$emit将函数执行延迟60秒?,angularjs,Angularjs,在我的服务代码的一个区域中,我有如下内容: $rootScope.$emit('rootScope:success-response') 在另一个代码区域中,我有一个每60秒执行一次的函数: this.$interval(function () { myFunc() }, 60 * 1000); 如果在过去60秒内发出“rootScope:success response”,我如何阻止myFunc运行?一种方法是取消$interval,然后重新设置,但更有

在我的服务代码的一个区域中,我有如下内容:

 $rootScope.$emit('rootScope:success-response')
在另一个代码区域中,我有一个每60秒执行一次的函数:

 this.$interval(function () {    
    myFunc()
        }, 60 * 1000);

如果在过去60秒内发出“rootScope:success response”,我如何阻止myFunc运行?

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

编辑:

$rootScope.$on('rootScope:successresponse',function(){
YourService.lastEmissed=+new Date();//将日期快速转换为int
});
---您的服务:
最后发射=1234567;
函数myFunc(){
如果(上次发出<+新日期()){
返回;
}
}

谢谢。你能给我举一个例子,说明如何将时间戳与日期进行比较吗?添加了一个例子-假设myFunc在某个外部服务中。
$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;
    }
}