记得在找实习时,被问到一个问题。前端发送请求失败后如何重新发送请求。
以 ajax 为例:
let num = 0;
function ajaxReconnection() {
$.ajax({
url: "http://localhost:3000",
method: "GET",
success: (result) => {
console.log("这里输出result:", result);
},
error: (error) => {
console.error("这里请求失败了:", error);
if (num < 5) {
setTimeout(() => {
console.log("失败后尝试重连:", num++);
test();
}, 1000);
} else {
console.log("重连次数超过5次,停止重连");
}
},
});
}
这里顺带一个 promiseIfy 把类似 ajax 中带 success 和 error 函数的写法改变为 promise 写法。
function promiseIfy (fn){
return function (obj){
return new Promise((resolve,reject)=>{
obj.success = function (value){
resolve(value)
};
obj.error = function (error){
reject(error)
}
fn(obj)
})
}
}
promisedAjax = promiseIfy($.ajax)
promisedAjax(obj).then((value)=>{
console.log(value)
},(error)=>{
console.error(error)
})