Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • 实现一个promise.retry 方法

实现一个promise.retry 方法

在规定的次数内,没成功就重复调用异步方法



function fn() {
    let n = Math.random();
   return new Promise((resolve,reject) => {
       setTimeout(() => {
          if (n > 0.7) {
               resolve(n)
           } else {
               reject(n)
           }
       },1000)
    })
}

Promise.retry = (fn,wait) => {
        new Promise(async (resolve, reject) => {
            while (wait--) {
                try {
                    let res = await fn()
                    console.log('执行成功',res);
                    resolve(res)
                    break;
                } catch (err) {
                    console.log('失败一次',err)
                    if(!wait) {
                        reject('全部失败')
                    }
                }
            }
        }).catch(err => {
            console.log('全部失败')
        })
}
Promise.retry(fn, 10)

Edit this page
最近更新: 2025/6/27 02:24
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人