不乱于心 2022-05-04 13:54:13
实现
含最大次数 & 延迟执行
Promise.retry = (fn, options = {}) => { const { max = 3, delay = 0 } = options let curMax = max const delayExec = () => delay && new Promise(resolve => setTimeout(resolve, delay)) return new Promise(async (resolve, reject) => { do { try { const res = await fn() resolve(res) return } catch (error) { await delayExec() curMax-- console.warn(`剩余次数${curMax}`) if (!curMax) reject(error) } } while (curMax > 0) }) }
测试
const resolveData = () => { return new Promise((resolve, reject) => { setTimeout( () => (Math.random() > 0.5 ? resolve('成功') : reject(new Error('失败'))) , 1000, ) }) } ;(async () => { try { const res = await Promise.retry(resolveData, { delay: 1000 }) console.warn('result', res) } catch (error) { console.warn(error) } })()
- 共 1 页
- 1
因为this生成顺序不同,所以需要在constructor中,需要使用super()
第 7 题:ES5/ES6 的继承除了写法以外还有什么区别?