Socket
Socket
Sign inDemoInstall

workq

Package Overview
Dependencies
2
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    workq

A super tiny work queue


Version published
Weekly downloads
1.9K
decreased by-15.36%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

workq

js-standard-style Build Status Coverage Status

A super tiny work queue.

It can handle nested queues, the order of execution is guaranteed.
The top level queue will start automatically once you add at least one job in the queue, the nested queues will start once the done callback has been called; you cannot add more jobs in the current queue after done has been called.

If you need a shared queue between multiple files pass the option { singleton: true } in every file you need it.

Install

npm i workq --save

Usage

const q = require('workq')()

q.add(job)

function job (child, done) {
  // perform some work
  // you can add nested jobs!
  child.add(nestedJob)
  done()
})

function nestedJob (child, done) {
  // perform some work
  done()
})

Async/await and promises are supported as well!

const q = require('workq')()

q.add(job)

// there is no need to call `done`!
async function job (child) {
  // perform some work
  // you can add nested jobs!
  child.add(nestedJob)
})

async function nestedJob (child) {
  // perform some work
})

If you need to know when a queue has finished all its jobs, you can use the drain api.
Note that in the top queue the drain hook can be called multiple times.

const q = require('workq')()

q.drain(done => {
  // the current queue has finished its jobs
  // async await is supported as well
  done()
})

q.add(job)

function job (child, done) {
  // perform some work
  // you can add nested jobs!
  child.add(nestedJob)
  done()
})

function nestedJob (child, done) {
  // perform some work
  done()
})

If you need to pass some parameter to the job, just add them after the function in add:

const q = require('workq')()

q.add(job, 'hello', 42)

function job (child, greeting, num, done) {
  console.log(greeting, num) // 'hello' 42
  done()
})

If needed you can also use the child method to create custom child queues. The child queues will be executed once the current queue has finished its execution.

const q = require('workq')()

const childq = q.child()

q.add(job, 'hello', 42)
childq.add(job, 'hello', 42)

function job (child, greeting, num, done) {
  console.log(greeting, num) // 'hello' 42
  done()
})

License

Licensed under MIT.

Keywords

FAQs

Last updated on 30 Nov 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