如何实现停止并开始使用$ interval服务

时间:2016-04-13 09:49:10

标签: angularjs

我在项目中使用$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服务。

2 个答案:

答案 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);
}