promisu
Version:
functional promise with map filter reduce scan all race every some few try waitfor finally queue debounce throttle
26 lines (21 loc) • 600 B
JavaScript
const PromisuWaitFor = (condition, interval) => new Promise((resolve, reject) => {
const intervalNumber = Number.isInteger(interval) && interval > 0
? interval
: 100
const check = () => {
Promise.resolve().then(condition).then(val => {
if (typeof val !== 'boolean') {
throw new TypeError('Expect condition to return a boolean')
}
if (val === true) {
resolve()
} else if (val === false) {
reject()
} else {
setTimeout(check, intervalNumber)
}
}).catch(reject)
}
check()
})
module.exports = PromisuWaitFor