暂停 angular 间隔然后继续

pause a angular interval and then resume

我有一个功能,我每 10 秒重复一次。这很好用。它显示命令。现在我想要一个接受订单功能。但是当点击它时我想暂停间隔。当接受订单时 returns 我想再次恢复这个间隔。

最好的方法是什么?

我的代码

    if ($auth.isAuthenticated()) {
    //request
    $scope.checkNewOrders = function (){
        newOrderService.getNewOrders().then(function (response) {
            //console.log(response.data.status);
            if (response.data == 'token_error') {
                $auth.logout();
            }

            if (response.data.status == 'success') {
                $rootScope.openOrders = response.data.data;
            }

            if (response.data.status == 'no_orders') {
                $rootScope.openOrders = false;
            }
        });
    };

    //Put in interval, first trigger after 10 seconds
    $interval(function(){
        $scope.checkNewOrders();
    }.bind(this), 10000);

    //invoke initialy
    $scope.checkNewOrders();
}

$scope.acceptOrder = function(orderid) {
    console.log(orderid);
}

你应该创建一个变量 $interval:

var timer = null;
$scope.checkNewOrders = function (){ ...

timer = $interval(function(){
    $scope.checkNewOrders();
}.bind(this), 10000);

然后在点击函数里面,cancel定时器:

$scope.acceptOrder = function(orderid) {
    $interval.cancel(timer);
    timer = null;
}

更新完成后,恢复:

newOrderService.getNewOrders().then(function (response) {
     if (timer === null) {
         timer = $interval(function(){
             $scope.checkNewOrders();
         }.bind(this), 10000);
     }
     ...