如何配置我的方法在x秒后调用?

时间:2018-04-17 12:38:19

标签: javascript angularjs

我想在x间隔秒后启动计时器。这个x间隔秒将来自服务器端。

现在我有一些进程在服务器端和页面加载我调用getData方法,它启动基于isRunning标志的计时器,我显示进度 直到我发现isRunning false然后停止计时器。

因此,如果用户已经在我的页面上,我有1个调度作业,将在x秒后运行,所以我希望这个getData在x秒后调用。现在一旦用户进入页面,getData就会继续运行到服务器端获得进度安排工作。

因此,我想我将获得第一个计划作业的总秒数,并配置我的计时器以在x秒后启动getData方法,如果用户执行刷新页面的话。

但是在这里我没有得到如何配置$ scope.startTimer方法,它将在x秒后启动。例如:如果调度作业将在一小时后运行,那么启动计时器方法应该只启动1小时后继续每2秒调用一次getData方法

以下是我的代码:

function getData() {
        myService.get(function (response) {
             if ($scope.isRunning)
                 $scope.startTimer();
             else
                 $scope.stopTimer();
             //response.totalSeconds;here i will get total seconds after which i want to call this method again to show progress of schedule job
        });
    }


var stop;
    $scope.startTimer = function () {
        // Don't start a new timer
        if (angular.isDefined(stop)) return;

        stop = $interval(function () {
            if ($scope.refreshTimer > 0) {
                $scope.timerLabel = false;
                $scope.refreshTimer = $scope.refreshTimer - 1;
            } else {    //REFERSH CALL
                $scope.stopTimer();
                getMockProgress();
            }
        }, 2000);
    };

    $scope.stopTimer = function () {
        if (angular.isDefined(stop)) {
            $interval.cancel(stop);
            stop = undefined;
        }
    };

更新:

else
    $scope.stopTimer();
    if (response.milliSeconds > 0)
              setTimeout($scope.startTimer, response.milliSeconds);

但是这在x毫秒后无法调用startTimer方法。

我将不胜感激任何帮助:)

0 个答案:

没有答案