我有一個輸入欄。當在這個字段上有一個關鍵字時,我發送一個帶有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