UNPKG

redis-smq-common

Version:

Provides essential components and utilities shared across RedisSMQ packages.

41 lines 1.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waterfall = waterfall; function waterfall(tasks, callback) { if (!Array.isArray(tasks)) { return callback(new Error('First argument to waterfall must be an array of functions')); } if (tasks.length === 0) { return callback(); } let taskIndex = 0; function nextTask(error, result) { if (error) { return callback(error); } taskIndex = taskIndex + 1; if (taskIndex >= tasks.length) { return callback(null, result); } setImmediate(() => { try { if (taskIndex === 0) { tasks[taskIndex](nextTask); } else { tasks[taskIndex](result, nextTask); } } catch (err) { callback(err instanceof Error ? err : new Error(String(err))); } }); } try { tasks[0](nextTask); } catch (err) { callback(err instanceof Error ? err : new Error(String(err))); } } //# sourceMappingURL=waterfall.js.map