我想在循环中每2秒调用一次API。我怎样才能做到这一点?
var letterArray = ['a', 'b', 'c'];
for (var j = 0; j < letterArray.length; j++) {
$timeout(callApi(letterArray[j]), 2000);
}
function callApi(searchInput) {
var request = {
//
url: 'https://someApi/search?name=' + searchInput,
method: 'GET',
headers: {
'Authorization': 'abc'
}
};
$http(request).then(onComplete, onError);
}
答案 0 :(得分:1)
使用$ interval代替$ timeout并删除该循环,使用变量进行跟踪。请记住在范围配置时配置和取消间隔。
var letterArray = ['a', 'b', 'c'];
var inr = $interval(function(){
var search = letterArray.shift();
if(!search && inr) {
$interval.cancel(inr);
inr = null;
}
callApi(search);
}, 2000);
function callApi(searchInput) {
var request = {
//
url: 'https://someApi/search?name=' + searchInput,
method: 'GET',
headers: {
'Authorization': 'abc'
}
};
$http(request).then(onComplete, onError);
}
请注意,您可能还想取消api或任何范围处置等异常的间隔。