我正在尝试下面的代码,以便在POST请求的特定时间后显示超时消息
$scope.timeout = false;
$scope.testAPICall = function(){
$http({
url: 'http://samedomain.com/GetPersons',
method: "POST",
data: postData
})
.success(function (data, status, headers, config) {
$scope.timeout = true;
$scope.persons = data;
})
.error(function (data, status, headers, config) {
$scope.status = status;
});
}
$timeout(testAPICall,1000) //for testing I kept 1000ms
if(!timeoutTest){
alert("Timeout!!!");
}
问题是我正在尝试使用能够在135毫秒内提供响应时间的API,并且为了增加功能,我为长时间运行的请求添加了超时消息
答案 0 :(得分:0)
您可以使用$q
提供商来帮助解决此问题:
$scope.testApiCall = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.reject("Timed out!");
}, 1000);
$http({
url: 'http://samedomain.com/GetPersons',
method: "POST",
data: postData
})
.success(function (data, status, headers, config) {
deferred.resolve(data);
})
.error(function (data, status, headers, config) {
deferred.reject(status);
});
return deferred.promise;
};
//Call function like this
$scope.testApiCall().then(function(data) {
$scope.persons = data.persons;
})
.catch(function(status) {
$scope.status = status;
});
如果达到时限,承诺将被拒绝,否则它将正常工作。