1.0.0 • Published 4 years ago

delayable-idle-abort-promise v1.0.0

Weekly downloads
9
License
MIT
Repository
github
Last release
4 years ago

NPM npm npm

delayable-idle-abort-promise

Race an array of promises against a promise that rejects if nothing happens in the specified time window, but that can be postponed by signaling activity

Example

import DelayAbort, { AbortError } from 'delayable-idle-abort-promise'

const onePromise = (abort) => new Promise(() => {
  setTimeout(abort, Math.round(Math.random() * 1000))
})

const control = DelayAbort(1000)

setInterval(() => {
  // postpone() will delay the "natural" internal interval,
  // but not calls to abort()
  control.postpone()
}, 100)

try {
  const result = await control.race([
    onePromise(control.abort),
    anotherPromise
  ])

  // do something with result
} catch (e) {
  if (e instanceof AbortError) {
    console.log(e.lastActivity, e.asDate())
  }
}

License

MIT