我得到了完美的服务
this.getcustomers= function() {
var deferred = $q.defer();
$http({
method: 'GET',
url: 'api/customers'
}).then(function success(data) {
deferred.resolve(data.data);
}, function error(error) {
deferred.reject(error);
});
return deferred.promise;
};
如何在上面添加timeout
。我尝试了stackoverflow的样本,但没有任何工作
我需要请求继续尝试5000毫秒并在该时间过去时显示错误。
添加timeout : timeout|promise
对我不起作用。
有什么想法吗?
答案 0 :(得分:1)
您要找的是retry
机制,而不是timeout
。无论如何,超时意味着“在X时间之后执行一个动作”,在JS中。
请在此处查看答案,应该是您正在寻找的内容:
AngularJS service retry when promise is rejected
答案 1 :(得分:0)
以下是jsfiddle
的工作链接function httpRequestHandler () {
var timeout = $q.defer(),
result = $q.defer(),
timedOut = false,
httpRequest;
$timeout(function () {
timedOut = true;
timeout.resolve();
}, (1000 * $scope.timeout));
httpRequest = $http({
method : 'post',
url: '/echo/json/',
data: createData(),
cache: false,
timeout: timeout.promise
});
httpRequest.success(function(data, status, headers, config) {
result.resolve(data);
});
httpRequest.error(function(data, status, headers, config) {
if (timedOut) {
result.reject({
error: 'timeout',
message: 'Request took longer than ' + $scope.timeout + ' seconds.'
});
} else {
result.reject(data);
}
});
return result.promise;
}