Sha256: e0469d4b83f6ba764b15f80e1766b75c136fbff68f048f4c050f0b1c7f065f69
Contents?: true
Size: 1.01 KB
Versions: 103
Compression:
Stored size: 1.01 KB
Contents
'use strict'; const kDone = Symbol('kDone'); const kRun = Symbol('kRun'); /** * A very simple job queue with adjustable concurrency. Adapted from * https://github.com/STRML/async-limiter */ class Limiter { /** * Creates a new `Limiter`. * * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed * to run concurrently */ constructor(concurrency) { this[kDone] = () => { this.pending--; this[kRun](); }; this.concurrency = concurrency || Infinity; this.jobs = []; this.pending = 0; } /** * Adds a job to the queue. * * @param {Function} job The job to run * @public */ add(job) { this.jobs.push(job); this[kRun](); } /** * Removes a job from the queue and runs it if possible. * * @private */ [kRun]() { if (this.pending === this.concurrency) return; if (this.jobs.length) { const job = this.jobs.shift(); this.pending++; job(this[kDone]); } } } module.exports = Limiter;
Version data entries
103 entries across 103 versions & 6 rubygems
Version | Path |
---|---|
appmap-0.64.0 | ./node_modules/ws/lib/limiter.js |
appmap-0.63.0 | ./node_modules/ws/lib/limiter.js |
UrgentcareCLI-0.1.1 | node_modules/ws/lib/limiter.js |