@pdz/q

2.0.0 • Public • Published

Simple way to run any functions in queue, with pauses between jobs, priority and waiting timeouts.

Example:

'use strict';

const pdzQ = require('@pdz/q');

const log = (...args) => {
  console.log.apply(null, [parseFloat(Date.now() / 1000).toFixed(1)].concat(args));
}

const q = new pdzQ({
  pause: 100, // Pause between jobs
  wait: 5000, // Wait for job execution
  timeout: 5000, // Additional timeout if wait is exceed but job is already runned
  prio: 0 // Default priority
});

// q.job(function, [conf]);

q.job(() => 'Job 1 - ok').then(log).catch(e => log(e.message));
q.job(() => 'Job 2 - ok').then(log).catch(e => log(e.message));
q.job(() => 'Job 3 - ok').then(log).catch(e => log(e.message));
q.job(() => 'Job 4 - ok').then(log).catch(e => log(e.message));
q.job(async () => {
  await new Promise(pres => setTimeout(pres, 1000));
  return 'Job 5 - ok';
}).then(log).catch(e => log(e.message));
q.job(async () => {
  await new Promise(pres => setTimeout(pres, 10000));
  return 'Job 6 - ok';
}).then(log).catch(e => log('Job 6 - error:', e.message)); // Timeout exceed
q.job(async () => {
  await new Promise(pres => setTimeout(pres, 10000));
  return 'Job 7 - ok';
}).then(log).catch(e => log('Job 7 - error:', e.message)); // Wait exceed

const testJob8 = async (...args) => {
  await new Promise(pres => setTimeout(pres, 1000));
  return 'Job 8 - ok with prio 1 and params: [' + args.join(',') + ']';
}
  
q.job(testJob8.bind(null, 'Param1', 'Param2'), {wait: 30000, timeout: 20000, prio: 1}).then(log).catch(e => log(e.message)); // No exceed

q.job(async () => {
  await new Promise(pres => setTimeout(pres, 10000));
  return 'Job 9 - ok';
}).then(log).catch(e => log('Job 9 - error:', e.message)); // Wait exceed

// 1636195520.6 Job 1 - ok
// 1636195521.7 Job 8 - ok with prio 1 and params: [Param1,Param2]
// 1636195521.8 Job 2 - ok
// 1636195521.9 Job 3 - ok
// 1636195522.0 Job 4 - ok
// 1636195523.1 Job 5 - ok
// 1636195525.6 Job 7 - error: Wait for job execution timeout exceed
// 1636195525.6 Job 9 - error: Wait for job execution timeout exceed
// 1636195530.6 Job 6 - error: Job execution timeout exceed

Readme

Keywords

Package Sidebar

Install

npm i @pdz/q

Weekly Downloads

2

Version

2.0.0

License

ISC

Unpacked Size

9.12 kB

Total Files

5

Last publish

Collaborators

  • pdz