【发布时间】:2021-04-23 16:19:45
【问题描述】:
我浏览了一些链接:
How to cancel an $http request in AngularJS?
Cancelling ongoing Angular $http requests when there's a new request
How to cancel a $http call from controller in Angular JS?
但在我的代码中不起作用
如何取消之前的请求?下面在我的请求服务代码中。
function PostData (url, data,cancelPrevious, auth, token, headers) {
var deferred = $q.defer();
token = token || window.apiToken;
headers = headers || {};
if (cancelPrevious && $http.pendingRequests.length > 0) {
deferred.resolve('cancel');
var deferred = $q.defer();
var newPostData = data ? JSON.stringify(JSON.parse(data)) : null;
$http({
method: "POST",
url: url,
headers: headers,
data: newPostData
}).then(function (response) {
deferred.resolve(response.data);
}),
function (data) {
deferred.resolve(data);
};
return deferred.promise;
} else {
var newPostData = data ? JSON.stringify(JSON.parse(data)) : null;
$http({
method: "POST",
url: url,
headers: headers,
data: newPostData
}).then(function (response) {
deferred.resolve(response.data);
}),
function (data) {
deferred.resolve(data);
};
return deferred.promise;
}
};
Using -
Service.PostData(config.apiBaseUrl + "Monitoring/GetAllSpotLines", JSON.stringify(postData), true)
如果 $http.pendingRequests 数组中有任何请求未决,我将使用“cancelPrevious”标志取消请求。
我已经清楚地检查过它正在进入该条件,但 deferred.resolve('cancel') 不起作用
【问题讨论】:
-
哪个部分不工作?您链接的所有示例都有效...确保将取消器/延迟作为超时对象传递给http调用
timeout: deferred.promise。我觉得这是一个更好的解释示例:odetocode.com/blogs/scott/archive/2014/04/24/… -
deferred.resolve('cancel') 这部分对我不起作用。我知道所有示例都在起作用,但不明白我在这里错过了什么
-
谢谢..我尝试了 timeout: deferred.promise 并解决了我的问题..
标签: javascript angularjs promise xmlhttprequest angular-promise