UNPKG

recoder-code

Version:

🚀 AI-powered development platform - Chat with 32+ models, build projects, automate workflows. Free models included!

47 lines (46 loc) • 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Barrier = void 0; /** * A simple barrier to synchronize flow of multiple async operations. */ class Barrier { constructor(targetCount) { this.currentCount = 0; this.targetCount = targetCount; this.promise = new Promise(resolve => { this.resolve = resolve; }); } /** * Signal that a participant has reached the barrier. * * The barrier will be resolved once `targetCount` participants have reached it. */ signal() { this.currentCount += 1; if (this.currentCount === this.targetCount) { this.resolve(); } } /** * Wait for the barrier to be resolved. * * @returns A promise that resolves when the barrier is resolved. */ async wait() { return this.promise; } /** * Signal that a participant has reached the barrier and wait for the barrier to be resolved. * * The barrier will be resolved once `targetCount` participants have reached it. * * @returns A promise that resolves when the barrier is resolved. */ async signalAndWait() { this.signal(); return this.wait(); } } exports.Barrier = Barrier;