Promised First-In-First-Out buffer. Await on push to be told when a value is consumed and await on shift for a value to consume when the buffer is empty
npm i p-fifo
Await on push
await on push to be told when your pushed value is consumed:
const Fifo =const fifo =// Consume a value from the buffer after 1 secondconsole// Nothing in the buffer, push a value and wait for it to be consumedawait fifoconsoleconsole// Output:// "hello" was consumed// push: 1006.723ms
Await on shift
If the buffer is empty, you can
await on a value to be pushed:
const Fifo =const fifo =// Push a value into the buffer after 1 secondconsole// Nothing in the buffer, wait for something to arriveconst value = await fifoconsoleconsole// Output:// consumed "hello" from the buffer// shift: 1002.652ms
const fifo =
Add a value to the end of the FIFO buffer.
Returns a promise that is resolved when the pushed value is shifted off the start of the buffer.
Remove the first value from the FIFO buffer and return that removed value in a promise.
Returns a promise that resolves to a value from start of the FIFO buffer. If there are no values in the buffer the promise will resolve when a value is next pushed.
Note that multiple calls to shift when the buffer is empty will not resolve to the same value i.e. a corresponding number of calls to
push will need to be made to resolve all the promises returned by calls to
true if the FIFO buffer is empty and
Feel free to dive in! Open an issue or submit PRs.
MIT © Alan Shaw