【发布时间】:2017-11-23 08:17:12
【问题描述】:
在预先输入的情况下,我正在取消之前的调用,以防它尚未返回并且已经进行了新的调用,使用以下代码:
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 调用的,在我的文本中找不到任何属性。是我做错了还是在中止请求时无法附加消息?
【问题讨论】:
-
我没有看到您取消上一个通话的位置。显示该代码。
标签: javascript angularjs promise angular-promise cancellation