按间隔运行角度函数,但等到上一次调用完成

时间:2015-10-14 02:24:18

标签: angularjs

我知道如何使用angular运行一个带有间隔的函数但是每隔x秒运行一个函数的最干净的方法是什么,但是等到上一次调用完成。有时ajax调用会因为某种原因而卡住并且需要更长时间,所以我不希望多次调用被阻塞。

每次呼叫开始和结束时都是一个布尔标志的最佳方法,并检查它或更简单的方式。

2 个答案:

答案 0 :(得分:1)

试试这个

$scope.Timer = null

$scope.start = function() {

    $scope.Timer = $interval(function() {
        // do whatever you wanna to do
    }, 1000);

}

$scope.stop = function() {

    if ($scope.Timer) {
        $interval.cancel($scope.Timer);
    }

}

在ajax调用之前停止间隔,并在成功回调之后再次启动它

答案 1 :(得分:0)

如果确保只有在上一次完成后才能再次调用方法,那么您应该使用$timeout(或setTimeout)代替$interval (或setInterval)。

function runAtAnInterval(){
    // Do stuff
    // Do stuff
    // console.log("do stuff");

    $timeout(runAtAnInterval, 1000);
}
runAtAnInterval();

这里有excellent article解释计时器如何在Javascript中运行。