UNPKG

node-schedule-queue

Version:

Promise queue with schedule

39 lines (32 loc) 762 B
"use strict"; const Queue = require("promise-queue"); const Schedule = require("node-schedule"); const EventEmitter = require("events").EventEmitter; function create(name, cron, job, pending=1) { const queue = new Queue(pending, Infinity); const eventEmitter = new EventEmitter(); const emit = eventEmitter.emit.bind(eventEmitter); function invoke() { return new Promise((resolve, reject) => { queue.add(async function () { try { const data = await job(emit); return resolve(data); } catch (error) { return reject(error); } }); }); } Schedule.scheduleJob(name, cron, invoke); return { name, createAt: Date.now(), invoke, on: eventEmitter.on.bind(eventEmitter), emit }; } module.exports = { create };