在预先键入的情况下,我正在取消上一个调用,以防它尚未返回并且已进行新调用,使用以下代码:
function($http, $window, $q, $timeout){
var suggestions = [];
var cancel = $q.defer();
return {
getSuggestions : function(inputText){
var deferred =$q.defer();
var promise = deferred.promise;
cancel.resolve('request cancelled');
cancel = $q.defer();
var baseUrl = "http://localhost:8080/PackagingTest/hello";
var params = {
query : inputText,
suggestionsSize : 10
}
$http.get(baseUrl, {params : params, timeout : cancel.promise}).then(
function(response){
suggestions = repsonse;
deferred.resolve(suggestions);
}, function(error){
//check if cancelled and log the error message
if(){
console.log(someErrorMsg);//should log 'request cancelled'
}
console.log(error);
deferred.reject(error);
});
return promise;
}
}
}
每次发出新请求时,都会取消上一个请求。但我无法收到已取消的状态消息。$http错误处理程序是使用 data: null, status: -1, config: Object, statusText: "", headers: function
调用的,我找不到文本的任何属性。我做错了还是在请求中止时无法附加消息?
实际上没有办法将数据传递给abort
上的catch
处理程序。下面是 angular 内部使用的onabort
回调:
var requestError = function() {
// The response is always empty
// See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error
completeRequest(callback, -1, null, null, '');
};
其中completeRequest
的定义是:
function completeRequest(callback, status, response, headersString, statusText) {...}