在数组中填充$http/rest请求未返回响应的日期

Fill an array with dates when $http/rest requests did not return a response

本文关键字:请求 返回 响应 日期 rest 数组 填充 http      更新时间:2023-09-26

我想执行一个30天的http/rest请求,并用没有返回响应的日期填充一个数组。做这件事的好方法是什么?我不知道一个好的模式,而且由于http/rest请求的异步性质,我觉得它很混乱。

下面的代码可以工作,但它存储最近报告的内容。我想存储最近未报告的。

        $scope.recentReported = [];
        $scope.getRecentReported = function () {
          var dateToday = new Date();
          for (i = 0; i < $scope.recentDateLength; i++) {
            var dateThen = moment(dateToday).add(-i, 'days');
            RestRequestsSrvc.getRevenue(dateThen)
              .then(
                function (response) {
                  if (response) {
                    $scope.recentReported.push(response.date);
                  }
                }
              );
          }
        };

要实现这一点,您需要使用$q并链接您的$http调用。首先获取一个包含日期的数组:

  var dates = [];
  for (i = 0; i < $scope.recentDateLength; i++) {
    dates.push(moment(dateToday).add(-i, 'days'));
  }

然后像这样连锁你的电话:

$q.all(dates.map(function(dateThen){
  return RestRequestsSrvc.getRevenue(dateThen);  
})).then(function(results){
  //results now contains some null values for the responses that did not return any value
  results.forEach(function(result, resultIndex){
    if(!result){
      $scope.recentUnReported.push(//your fill up here);
    };
  });
});