我有一种方法调用角度服务,从而通过服务发出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,它在解析时中止请求.
原文链接:https://www.f2er.com/angularjs/143209.html所以在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的方法总是会中止以前的调用,如果尚未解决!
希望这可以帮助!