p-fifo
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
Install
npm i p-fifo
Usage
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 second console// 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 second console// Nothing in the buffer, wait for something to arriveconst value = await fifoconsoleconsole // Output:// consumed "hello" from the buffer// shift: 1002.652ms
API
const fifo =
fifo.push(value): Promise
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.
fifo.shift(): Promise<Any>
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 shift
.
fifo.isEmpty(): Boolean
Returns true
if the FIFO buffer is empty and false
otherwise.
Contribute
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Alan Shaw