1.0.0 • Published 4 years ago

queue-this v1.0.0

Weekly downloads
3
License
ISC
Repository
-
Last release
4 years ago

Queue This

  • Creates a Queue for functions & class prototypes
  • Converts all functions to asynchronous
  • Ideal for traffic-control (i.e. API functions & processes)

Installation

Install via NPM

npm install queue-this

Example Usage

Initializing a Queue

const Queue = require('queue-this')


let fn = str => `You input the string: ${str}`
//  result: fn('test') -> "You input the string: test"

fn = new Queue(fn)
// or
fn = new Queue(str => `You input the string: ${str}`)
//  result: fn('test') -> promise
//          fnQueued('test').then(r -> "You input the string: test")

Working with the Queue

let fn = new Queue(str => {
  return new Promise(resolve => {
    setTimeout(_=>resolve(`You input the string: ${str}`), 1000)
  })
})

fn('test1').then(r=>console.log(r))
fn('test2').then(r=>console.log(r))
fn('test3').then(r=>console.log(r))
fn('test4').then(r=>console.log(r))
// Result:
//     1000ms -> "You input the string: test1"
//     2000ms -> "You input the string: test2"
//     3000ms -> "You input the string: test3"
//     4000ms -> "You input the string: test4"

Adjusting the Queue Concurrency

let fn = str => return new Promise(resolve => {
  setTimeout(_=>resolve(`You input the string: ${str}`), 1000)
})

// Adjust the concurrent "processing" items
fn = new Queue(fn, { maxConcurrent: 2 })

fn('test1').then(r=>console.log(r))
fn('test2').then(r=>console.log(r))
fn('test3').then(r=>console.log(r))
fn('test4').then(r=>console.log(r))
// Result:
//     1000ms -> "You input the string: test1"
//     1000ms -> "You input the string: test2"
//     2000ms -> "You input the string: test3"
//     2000ms -> "You input the string: test4"

Adjusting Resolve/Catch Behavior

// Default Behavior
let itsAnApple = str => new Promise((resolve,reject) => str === 'apple' ? resolve("it's an Apple!"):reject("Not an Apple!")))
let fn1 = new Queue(itsAnApple)
//     fn1('car')
//       -> Promise {<rejected>: "Not an Apple!"}
//     fn1('apple')
//       -> Promise {<resolved>: "it's an Apple!"}


// Catch on error
let itsAnApple = str => new Promise((resolve,reject) => resolve(str === 'apple' ? { result:"it's an Apple!" }:{ error:"Not an Apple!" }))
let fn2 = new Queue(fn, { rejectOnError:true })
//     fn2('car')
//       -> Promise {<rejected>: { error:"Not an Apple!" }}
//     fn2('apple')
//       -> Promise {<resolved>: { result:"it's an Apple!" }}


// Catch on False/Null
let itsAnApple = str => new Promise(resolve => resolve(str === 'apple' ? true:false))
let fn3 = new Queue(fn, { rejectOnFalse:true, rejectOnNull:true })
//     fn3('car')
//       -> Promise {<rejected>: "Not an Apple!"}
//     fn3('apple')
//       -> Promise {<resolved>: "it's an Apple!"}

License

The MIT License

1.0.0

4 years ago