Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

p-fifo

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

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.

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
100K
increased by0.64%
Maintainers
1
Weekly downloads
 
Created
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

Package last updated on 31 Jul 2019

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc