Reusable asynchronous signals
pnpm add asyncsignal
// or
npm install asyncsignal
// or
yarn add asyncsignal
import { asyncSignal } from 'asyncsignal';
// Create a signal/Promise
const signal = asyncSignal();
// or with a constraint
// when the resolve is executed, the constraint function must return true
const signal = asyncSignal(()=>true);
// or with options
const signal = asyncSignal(()=>true,{timeout:100});
// wait signal is resolved
await signal()
// wait signal is resolved with a timeout
await signal(100)
// wait signal is resolved with a timeout and throw error
await signal(100,new Error())
signal.resolve('resolved value')
// or
signal.reject('rejected value')
signal.reject(new Error('rejected error'))
// check signal status
signal.isPending()
signal.isResolved()
signal.isRejected()
// reset signal
signal.reset()