我是角色的新手,我希望以3秒的间隔调用一个函数doSomething()15秒。 doSomething()在内部调用REST API,我想每隔3秒调用一次该API。
我希望在15秒后停止该API调用。
我怎么能通过$ timeout和$ interval函数来做到这一点?
答案 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)