我在项目中使用$interval
。
这是来自我的控制器的代码:
self.timer = $interval(function () {
checkUpdate();
}, 10000, false);
function checkUpdate() {
sensorsDataServise.checkForUpdate("2012-10-04T16:10:00")
.then(function (result) {
if (result.status == '200') {
//here to stop the $interval
return result.data;
}
});
}
function modalClosed() {
//here to start $interval
}
我需要停止并启动$interval
服务。
我尝试在$interval.cancel(self.timer)
函数和
checkUpdate
我尝试在$interval.start(self.timer)
函数中使用此modalClosed
。
但我得到错误:
$ interval.cancel和$ interval.start不是函数。
如何实施停止并开始使用$interval
服务。
答案 0 :(得分:3)
我想说:RTFM - > https://docs.angularjs.org/api/ng/service/$interval
更确切地说:开始你不需要.start只做
typeof
停止做:
var stopHandler = $interval(myFn);
$ interval.cancel似乎未在示例代码中定义,这可能是由于注入问题,请向我们展示您的控制器/服务定义以及您向我们展示的代码
答案 1 :(得分:1)
$interval
确实有.cancel
方法取消当前的定时器,但没有名为start
的方法。
要启动计时器,您只需在$internal
内运行modalClosed
并清除checkUpdate()
内的同一计时器。
注意:确保先执行ModalClosed()
函数,然后checkUpdate()
其他self.timer
对象将被取消定义。
JS CODE:
var self = this;
function checkUpdate() {
sensorsDataServise.checkForUpdate("2012-10-04T16:10:00")
.then(function (result) {
if (result.status == '200') {
//here to stop the $interval
$internal.cancel(self.timer);
return result.data;
}
});
}
function modalClosed () {
//here to start $interval
self.timer = $interval(function () { checkUpdate(); }, 10000, false);
}