Skip to content

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

License

Notifications You must be signed in to change notification settings

pocesar/js-delayable-idle-abort-promise

Repository files navigation

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published