具有时间延迟的角度多个http循环请求

时间:2016-12-22 09:38:04

标签: angularjs

我的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';
  });

1 个答案:

答案 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';
});