加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 07:49:01 所属栏目:安全 来源:网络整理
导读:我有一种方法调用角度服务,从而通过服务发出ajax请求.我需要确保如果这被称为多次,先前的请求中止(如果还没有被解决). 这个方法可以被多次调用.这个方法其实来自ngTable在ngTableParams上: getData = function($defer,params) { myService.getRecord(params
我有一种方法调用角度服务,从而通过服务发出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的方法总是会中止以前的调用,如果尚未解决!

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读