2019-10-27 09:21:36 -07:00
|
|
|
async function delay(ms) {
|
|
|
|
await new Promise(res => setTimeout(res, ms))
|
|
|
|
}
|
|
|
|
|
|
|
|
async function waitPromise (getPromise, checker) {
|
|
|
|
do {
|
|
|
|
const result = await getPromise()
|
|
|
|
if (checker(result))
|
|
|
|
return result
|
|
|
|
await delay(1000)
|
|
|
|
} while (true)
|
|
|
|
}
|
|
|
|
|
2019-11-01 01:21:28 -07:00
|
|
|
async function retry (n, getPromise) {
|
|
|
|
while (n) {
|
|
|
|
try {
|
|
|
|
return await getPromise()
|
|
|
|
} catch (e) {
|
|
|
|
await delay(3000)
|
|
|
|
n--
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
|
2019-10-27 09:21:36 -07:00
|
|
|
Array.prototype.seqMap = async function (transition) {
|
|
|
|
const results = []
|
|
|
|
for (let i = 0; i < this.length; i++) {
|
|
|
|
results[i] = await transition(this[i])
|
|
|
|
}
|
|
|
|
return results
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
waitPromise,
|
2019-11-01 01:21:28 -07:00
|
|
|
delay,
|
|
|
|
retry
|
2019-10-27 09:21:36 -07:00
|
|
|
}
|