1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| const queryRequest = (data) => { return new Promise((resolve, reject) => { const res = data.map(v => v+'111') reject(res) }) } const retry = (query, timeout = 30000, times = 5) => { let timer = null return (data) => { return new Promise((resolve, reject) => { timer = setTimeout(() => { query(data).then(res => { clearTimeout(timer) resolve(res) }).catch(err => { clearTimeout(timer) reject(err) }) }, timeout) }) } } const longRequestRetry = async (data, timeout = 30000, times = 5) => { try { const res = await retry(queryRequest, timeout = 30000, times)(data) console.log('res', res) } catch(err) { if (times > 0) { console.log('times', times) longRequestRetry(data, timeout, times - 1) } } }
const request = (data) => { queryRequest(data).then(res => {
}).catch(err => { longRequestRetry(data) }) }
|