如何在特定时间(预定任务)后调用Angular js中的api端点?

时间:2017-09-23 19:33:45

标签: javascript angularjs

我有以下服务从API获取一些数据并且工作正常

我在app.run()方法中调用此服务

// some code...

$scope.pageStudents;

    $scope.getStudentsPage = function(){

        $http({
              method: 'GET',
              url: 'studentsResource/students'
            }).then(function successCallback(response) {

                $scope.pageStudents = response.data;

              });

    };


    //i want to call this method every 5 min for example.
    $scope.getStudentsPage();

我的问题是如何在每5分钟后调用我的$scope.getStudentsPage();,像预定的工作(如java中的石英),是角度还是javascript支持这个概念? 请任何人都可以指导我如何实现这一操作。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果你想采取一次延迟动作,那么你可以使用angular $timeout服务。如果您希望它多次发生,那就是$interval服务。

所以这样:

$scope.pageStudents;

$scope.getStudentsPage = function(){
    $http({
        method: 'GET',
        url: 'studentsResource/students'
    }).then(function successCallback(response) {
        $scope.pageStudents = response.data;
    });
};

$interval(function () {
    $scope.getStudentsPage();
}, 300000); // <--- 5 minutes in milliseconds

在普通的javascript中,您可以使用window.setTimeout或window.setInterval来执行此操作。在angularjs中,您应该使用$ timeout和$ interval服务,因为angularjs将无法正确运行其更改检测。

$ timeout和$ interval的文档可以在这里找到:
https://docs.angularjs.org/api/ng/service/$timeout
https://docs.angularjs.org/api/ng/service/$interval

这里的setTimeout和setInterval:
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval