ZeppSpace/shared/defer.js
2025-06-20 09:47:10 +02:00

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
}