Javascript 无法使用$resource取消请求
在尝试了以下解决方案后:我无法取消使用$resource发出的请求。 我最后一次尝试是: 控制器:Javascript 无法使用$resource取消请求,javascript,angularjs,angular-promise,angular-resource,ngresource,Javascript,Angularjs,Angular Promise,Angular Resource,Ngresource,在尝试了以下解决方案后:我无法取消使用$resource发出的请求。 我最后一次尝试是: 控制器: angular.module('theApp') .controller('homeController', function ($q, foodTypeFactory) { var vm = this; vm.testButton = function () { vm.aborter = $q.defer(); foodTypeFactory(vm.
angular.module('theApp')
.controller('homeController', function ($q, foodTypeFactory) {
var vm = this;
vm.testButton = function () {
vm.aborter = $q.defer();
foodTypeFactory(vm.aborter).getTest({}, function (data) {
console.log(data);
});
};
vm.cancelButton = function () {
vm.aborter.resolve();
}
});
食品类型工厂:
angular.module('theApp')
.factory('foodTypeFactory', function ($resource, BACKEND_API) {
return function (aborter) {
return $resource(BACKEND_API + '/api/foodtypes/:id', {id: '@id'}, {
getTest: {
timeout: aborter.promise
}
});
}
});
angular.module('theApp')
.factory('foodTypeFactory', function ($resource, BACKEND_API) {
return $resource(BACKEND_API + '/api/foodtypes/:id', {id: '@id'}, {
getTest: {
cancellable: true
}
});
});
一旦提出请求,即使我试图取消请求,请求也会完成。
我正在使用Angular 1.6.2和Angular resource 1.6.2
我做错了什么 我可以建议您使用http拦截器。。您可以停止一个请求。。。像这样的事情: 1) 创建一个类似(auth.interceptor.js:
"use strict";
angular
.module("demo")
.factory('authInterceptorService', ['$q', '$location', 'localStorageService',
function ($q, $location, localStorageService) {
// Public Method
return {
request: function (config) {
config.headers = config.headers || {};
if(!MYCONDITION){ //<-- you can here your logic to test if conitnue request flow or not
return; //<-- TERMINATE IT ..
}else{
return config; //<-- CONTINUE WITH NORMAL REQUEST
}
}
};
}]);
然后在所有请求(通过$http或$resource)中应用此逻辑…如果需要,也可以在此处注入承载令牌
希望它能帮助你我终于找到了解决办法! 从angular 1.5开始,可以使用$cancelRequest()取消资源。 就我而言: 控制器:
angular.module('theApp')
.controller('homeController', function (foodTypeFactory) {
var vm = this;
vm.testButton = function () {
vm.onGoingRequest = foodTypeFactory.getTest({}, function (data) {
console.log(data);
});
};
vm.cancelButton = function () {
vm.onGoingRequest.$cancelRequest();
}
});
食品类型工厂:
angular.module('theApp')
.factory('foodTypeFactory', function ($resource, BACKEND_API) {
return function (aborter) {
return $resource(BACKEND_API + '/api/foodtypes/:id', {id: '@id'}, {
getTest: {
timeout: aborter.promise
}
});
}
});
angular.module('theApp')
.factory('foodTypeFactory', function ($resource, BACKEND_API) {
return $resource(BACKEND_API + '/api/foodtypes/:id', {id: '@id'}, {
getTest: {
cancellable: true
}
});
});
一旦完成,我需要取消请求。使用这种方法,我只能在完成请求之前取消请求。如果需要,您可以截获响应..始终在我编写的文件中..并且不返回..如果您的条件不匹配