我有一个输入栏。当在这个字段上有一个关键字时,我发送一个带有AJAX和角度$ http服务的请求。我的问题是当另一个键盘事件触发时,我需要取消所有未决的请求。我看到很多答案,但我还没有找到解决方案。如何取消AngularJS中的待处理请求?
我想两件事情:
,我称之为
App.factory('findArticlesService', function($http, $q) {
var self = this;
self.canceller = null;
return {
getArticles: function(route, formData) {
if (self.canceller) {
self.canceler.resolve("Other request is pending");
}
var deferred = $q.defer();
self.canceller = $q.defer();
$http.post(route, angular.toJson(formData), {timeout: self.canceller.promise}).success(function(data) {
deferred.resolve({data: data});
});
return deferred.promise;
}
};
});
App.controller('mainCtrl', ['$scope', '$http', '$q', 'findArticlesService', function($scope, $http, $q, findArticlesService) {
var res = findArticlesService.getArticles(route, $scope.formData);
console.log(res);
}]);
它不工作所需要的服务。
这:
该取消所有的请求在发送之前。
你能帮我吗?
你需要的是反跳,或节流,这取决于你想要达到.. INFACT NG-模式选项为您提供的反跳选项是什么,这样你就可以使用,以及 – harishr 2015-03-19 11:18:22
我不认为ng-model有任何相互作用h $ http服务和Ajax请求,不是吗? – 2015-03-19 15:43:19
我只想指出,如果Ajax调用的触发器是某个用户输入字段,那么您可以使用ng-model-options – harishr 2015-03-19 15:56:46