http请求失败后重试需要考虑请求时间间隔,请求次数
/*
* url 请求地址
* method 请求方法
* data 请求参数
* fnSucceed 成功的回调
* fnFail失败的回调
*/
function ajaxPost (url ,method, data , fnSucceed , fnFail) {
//请求时间间隔,刚开始间隔时间短,后面间隔时间越来越长
let timeGaps = 1000;
//请求重试次数
let retryNum = 10;
var ajax = new XMLHttpRequest();
ajax.open( method , url , true );
ajax.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded" );
ajax.onreadystatechange = function () {
if( ajax.readyState == 4 ) {
if( ajax.status == 200 ) {
fnSucceed( ajax.responseText );
}
else {
fnFail( "HTTP请求错误!错误码:"+ajax.status );
if(retryNum > 0 ){
// 异常,重试
setTimeout(function(){
retryNum--;
ajaxPost(url ,method, data , fnSucceed , fnFail)
},timeGaps)
}
}
}
else {
}
}
ajax.send( data );
}