Socket
Socket
Sign inDemoInstall

p-fifo

Package Overview
Dependencies
2
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    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.


Version published
Weekly downloads
81K
decreased by-8.22%
Maintainers
1
Install size
18.5 kB
Created
Weekly downloads
 

Readme

Source

p-fifo

Build Status dependencies Status JavaScript Style Guide

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 = 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.723ms

Await 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.652ms

API

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

Keywords

FAQs

Last updated on 31 Jul 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc