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的方法总是会中止以前的调用,如果尚未解决! 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |