Package Exports
- p-fifo
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (p-fifo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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-fifoUsage
Await on push
await on push to be told when your pushed value is consumed:
const Fifo = require('p-fifo')
const fifo = new Fifo()
// Consume a value from the buffer after 1 second
setTimeout(() => fifo.shift(), 1000)
console.time('push')
// Nothing in the buffer, push a value and wait for it to be consumed
await fifo.push('hello')
console.log('"hello" was consumed')
console.timeEnd('push')
// Output:
// "hello" was consumed
// push: 1006.723msAwait on shift
If the buffer is empty, you can await on a value to be pushed:
const Fifo = require('p-fifo')
const fifo = new Fifo()
// Push a value into the buffer after 1 second
setTimeout(() => fifo.push('hello'), 1000)
console.time('shift')
// Nothing in the buffer, wait for something to arrive
const value = await fifo.shift()
console.log(`consumed "${value}" from the buffer`)
console.timeEnd('shift')
// Output:
// consumed "hello" from the buffer
// shift: 1002.652msAPI
const fifo = new 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