ajax请求失败后重连和promiseIfy

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

以 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)
})

猜你喜欢

转载自blog.csdn.net/qq_42535651/article/details/108916204
今日推荐