$ timeout和$ interval如何以角度协同工作

时间:2017-08-09 06:03:51

标签: angularjs settimeout setinterval

我是角色的新手,我希望以3秒的间隔调用一个函数doSomething()15秒。 doSomething()在内部调用REST API,我想每隔3秒调用一次该API。

我希望在15秒后停止该API调用。

我怎么能通过$ timeout和$ interval函数来做到这一点?

3 个答案:

答案 0 :(得分:0)

你只能通过$ timeout:

来完成
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope,$timeout) {

var count = 0;
callApi();

function callApi() {

    $timeout(function () {
     if(count < 5) {

         count++;
         callApi(); // call this function again
         console.log("this is"+count+"th loop");
     }
    }, 3000);
}
});

答案 1 :(得分:0)

也许你可以使用timeout和for循环来实现这个

var pull;
function timeOut(i){
  pull = $timeout(function () {
           console.log("put your req "+1)
         },3000)
}

for(var i=0; i<5; i++){
   timeOut(i)
}

执行完成后,您可以取消超时

$scope.$on('$destroy', function(){
  $timeout.cancel(pull);
});

答案 2 :(得分:0)

使用$ interval在这里更清楚

var intervalTimeSec = 3;
var intervalTimeLimitSec = 15;
var apiCalls = 0;
var intervalId = $interval(function() {
    //call the API here
    apiCalls++;
    if (apiCalls * intevalTimeSec >= intervalTimeLimitSec) {
        $interval.cancel(intervalId); // stops the interval
    }
}, intervalTimeSec * 1000)