相关疑难解决方法(0)

如何取消$资源请求

我试图找出如何使用$ resource的timeout属性动态取消挂起的请求.理想情况下,我希望能够取消具有某些属性的请求(基于发送的参数),但似乎这可能是不可能的.与此同时,我只是尝试取消所有挂起的请求,然后重置超时承诺以允许新请求.

问题似乎是$ resource配置只允许一个静态的超时值承诺.如果我正在进行单独的$ http调用,那么我可以做到这一点是有道理的,因为我可以为超时传递新的承诺,但是如何才能为$资源工作呢?我在这里设置了一个示例plunker: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();
  }
});
Run Code Online (Sandbox Code Playgroud)

现在,取消器在有待处理的请求时工作,但我似乎无法重置它 - 一旦一个请求被中止,所有将来的请求也将被中止. …

angularjs angular-resource

27
推荐指数
2
解决办法
2万
查看次数

如何拦截$资源请求

是否有办法拦截$ resource调用中的请求?

我想为它添加一个OAUTHv2标头,而不是为每个资源模型指定它.

目前我只能拦截响应,如文档中所述:

...

interceptor - {Object =} - 拦截器对象有两个可选方法 - response和responseError.使用http响应对象调用响应和responseError拦截器.请参阅$ http拦截器.

我知道你可以在$ http上推送一个全局拦截器,但我不想在API调用之外的任何请求中包含我的Bearer令牌(安全......)

任何正在做OAUTHv2的人都必须遇到这个问题.可惜在Angular.JS中没有标准的方法......

angularjs

10
推荐指数
1
解决办法
5073
查看次数

标签 统计

angularjs ×2

angular-resource ×1