Как отменить запросы $ ресурса

Я пытаюсь выяснить, как использовать свойство timeout $ ресурса для динамического отмены ожидающих запросов. В идеале я хотел бы просто иметь возможность отменять запросы с определенными атрибутами (на основе отправленных параметров), но, похоже, это невозможно. Тем временем я просто пытаюсь отменить все ожидающие запросы, а затем сбрасываю обещание тайм-аута, чтобы разрешить новые запросы.

Похоже, проблема заключается в том, что конфигурация $ resource допускает только одно статическое обещание для значения времени ожидания. Имеет смысл, как я мог бы сделать это, если бы я делал отдельные вызовы $ http, поскольку я мог просто передать новые обещания на время ожидания, но как это может работать для ресурса $? Я установил пример плунжера здесь:http://plnkr.co/edit/PP2tqDYXh1NAOU3yqCwP?p=preview

Вот мой код контроллера:

app.controller('MainCtrl', function($scope, $timeout, $q, $resource) {
  $scope.canceller = $q.defer();
  $scope.pending = 0;
  $scope.actions = [];
  var API = $resource(
    'index.html', {}, {
      get: {
        method: 'GET',
        timeout: $scope.canceller.promise
      }
    }
  )

  $scope.fetchData = function() {
    if ($scope.pending) {
      $scope.abortPending();
    }
    $scope.pending = 1;
    $scope.actions.push('request');
    API.get({}, function() {
      $scope.actions.push('completed');
      $scope.pending = 0;
    }, function() {
      $scope.actions.push('aborted');
    });
  }

  $scope.abortPending = function() {
    $scope.canceller.resolve();
    $scope.canceller = $q.defer();
  }
});

Прямо сейчас, отмена работает, когда есть ожидающий запрос, но я, кажется, не могу сбросить его - как только один запрос отменяется, все будущие запросы также будут прерваны.

Я уверен, что что-то упустил, так как возможность отменять ожидающие запросы кажется довольно важной функцией большинства веб-приложений (по крайней мере, я их создал).

Спасибо

Ответы на вопрос(6)

Ваш ответ на вопрос