我想在我的javascript代码中实现重试逻辑。这就是我调用API的方式:
$.ajax({
url: api_url + 'report',
type: 'GET',
dataType: 'json',
async: false,
tryCount : 0,
retryLimit : 3,
headers: {
"Authorization": "Basic " + btoa(api_username + ":" + api_pass)
},
data: {start: start_date, end: end_date},
success: function(result) {
data = result.results;
console.log("success");
},
error : function(xhr, textStatus, errorThrown ) {
console.log("in error");
if (textStatus == 'timeout') {
this.tryCount++;
if (this.tryCount <= this.retryLimit) {
//try again
console.log("try count:");
console.log(this.tryCount);
$.ajax(this);
return;
}
return;
}
if (xhr.status == 500) {
console.log("still 500");
} else {
console.log("still !500");
}
}
});
所以当服务器出现问题并且它返回http 500时,我上面的JS文件中的控件仍然没有进入“error:”块和这一行:“console.log(”in error“) ;”没有打印在控制台上。
如果我的服务器返回500,我怎样才能在代码中正确实现重试逻辑,然后它应该继续重试x次?
答案 0 :(得分:1)
500错误通常意味着后端服务器出现问题。所以它不会进入客户端JavaScript的错误块。我认为你无能为力。但总的来说,如果可能的话,你总是可以要求后端开发人员做更好的错误处理并返回错误响应。