UNPKG

omelop

Version:

[![Build Status](https://travis-ci.org/node-omelop/omelop.svg?branch=master)](https://travis-ci.org/node-omelop/omelop)

51 lines 3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCountDownLatch = exports.CountDownLatch = void 0; /** * Count down to zero or timeout and invoke cb finally. */ class CountDownLatch { constructor(count, opts, cb) { this.count = count; this.cb = cb; let self = this; if (opts.timeout) { this.timerId = setTimeout(function () { self.cb(true); }, opts.timeout); } } /** * Call when a task finish to count down. * * @api public */ done() { if (this.count <= 0) { throw new Error('illegal state.'); } this.count--; if (this.count === 0) { if (this.timerId) { clearTimeout(this.timerId); } this.cb(); } } } exports.CountDownLatch = CountDownLatch; function createCountDownLatch(count, opts, cb) { if (!count || count <= 0) { throw new Error('count should be positive.'); } if (!cb && typeof opts === 'function') { cb = opts; opts = {}; } if (typeof cb !== 'function') { throw new Error('cb should be a function.'); } return new CountDownLatch(count, opts, cb); } exports.createCountDownLatch = createCountDownLatch; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnREb3duTGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbC9jb3VudERvd25MYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQTs7R0FFRztBQUNILE1BQWEsY0FBYztJQUl2QixZQUFZLEtBQWEsRUFBRSxJQUEyQixFQUFFLEVBQTBCO1FBQzlFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO2dCQUN0QixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUk7UUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDOUI7WUFDRCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7Q0FDSjtBQWpDRCx3Q0FpQ0M7QUFhRCxTQUFnQixvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsSUFBc0QsRUFBRSxFQUE0QjtJQUN0SSxJQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0tBQzlDO0lBRUQsSUFBSSxDQUFDLEVBQUUsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUU7UUFDckMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNWLElBQUksR0FBRyxFQUFFLENBQUM7S0FDWDtJQUVELElBQUcsT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUM3QztJQUVELE9BQU8sSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLElBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQWZELG9EQWVDIn0=