angularjs – Angular – 使用Restangular时中止ajax请求

前端之家收集整理的这篇文章主要介绍了angularjs – Angular – 使用Restangular时中止ajax请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一种方法调用角度服务,从而通过服务发出ajax请求.我需要确保如果这被称为多次,先前的请求中止(如果还没有被解决).

这个方法可以被多次调用.这个方法其实来自ngTable在ngTableParams上:

getData = function($defer,params) {

      myService.getRecord(params).then(function(res){ 
             ...
             $defer.resolve(res.Records);
      }); 
}

这是服务的方法

this.getRecords = function(params) {
    ...

    return Restangular
          .all('/api/records')
          .post(filters);
};

如果ngTable发出3个电话,我希望前2个被中止(除非他们返回得很快,以致于解决了)

您可以通过timeout config属性中止$http调用,该属性可以是Promise,它在解析时中止请求.

所以在restangular,你可以这样做

var abort = $q.defer();
Restangular.one('foos',12345).withHttpConfig({timeout: abort.promise}).get();
abort.resolve();

例如,要将其与您的用户工具集成在一起,您可以在此服务中使用它:

var abortGet;

this.getRecords = function(params) {
  ...
  if (abortGet) abortGet.resolve();
  abortGet = $q.defer();
  return Restangular
    .all('/api/records')
    .withHttpConfig({timeout: abortGet.promise})
    .post(filters);
}

这样调用getRecords的方法总是会中止以前的调用,如果尚未解决

希望这可以帮助!

原文链接:https://www.f2er.com/angularjs/143209.html

猜你在找的Angularjs相关文章