UNPKG

@kitmi/jacaranda

Version:

JavaScript application framework

35 lines (28 loc) 900 B
import { sleep_ } from '@kitmi/utils'; import startWorker from './worker'; /** * * @param {Function} worker * @param {object} options * @property {integer} [options.interval=1000] */ async function startLoopWorker(worker, options) { let { interval, ...workerOptions } = { interval: 1000, throwOnError: true, ...options }; return startWorker(async (app) => { process.once('SIGINT', () => { app.stop_() .then(() => {}) // eslint-disable-next-line no-undef .catch((error) => console.error(error.message || error)); }); let lastResult; while (app.started) { lastResult = await worker(app, lastResult); if (app.started) { await sleep_(interval); } } return lastResult; }, workerOptions); } export default startLoopWorker;