35 lines
600 B
JavaScript
35 lines
600 B
JavaScript
export function Deferred() {
|
|
const defer = {}
|
|
|
|
defer.promise = new Promise(function (resolve, reject) {
|
|
defer.resolve = resolve
|
|
defer.reject = reject
|
|
})
|
|
|
|
return defer
|
|
}
|
|
|
|
export function delay(ms) {
|
|
const defer = Deferred()
|
|
|
|
setTimeout(defer.resolve, ms)
|
|
|
|
return defer.promise
|
|
}
|
|
|
|
export function timeout(ms, cb) {
|
|
const defer = Deferred()
|
|
ms = ms || 1000
|
|
|
|
const wait = setTimeout(() => {
|
|
clearTimeout(wait)
|
|
|
|
if (cb) {
|
|
cb && cb(defer.resolve, defer.reject)
|
|
} else {
|
|
defer.reject('Timed out in ' + ms + 'ms.')
|
|
}
|
|
}, ms)
|
|
|
|
return defer.promise
|
|
}
|