我的ID数组包含50+ id。
var ids = [
'3407197',
'0632706',
'18275',
...,
...
]
我想通过循环发送角度HTTP get请求。每次迭代都会延迟10秒延迟。当所有请求完成后,它将通知该请求已完成。
我已尝试使用此代码,但它会立即执行而不会延迟。
function collector(i){
setTimeout(function() {
return $http.get('http://example.com/' + ids[i])
.success(function(data) {
})
.error(function(err) {
})
},10000);
}
$scope.getAllData = function() {
var promises = [];
for (var i = 0; i < ids.length; i++) {
promises.push(collector(i));
}
return $q.all(promises);
}
$scope.getAllData ().then(function(data) {
$scope.debug = 'done';
});
答案 0 :(得分:0)
尝试$timeout
:
function getRequest(id) {
return $http.get('http://example.com/' + id)
.success(function (data) {})
.error(function (err) {});
}
var promise = $timeout();
ids.forEach(function(id) {
promise = promise.then(function() {
getRequest(id);
return $timeout(10000);
});
});
// not sure if this works
promise.then(function() {
$scope.debug = 'done';
});