ajax请求失败后重连和promiseIfy

    科技2022-07-13  117

    记得在找实习时,被问到一个问题。前端发送请求失败后如何重新发送请求。

    以 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) })
    Processed: 0.011, SQL: 8