"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Waiter = void 0;
class Waiter {
    constructor(data = undefined) {
        this._data = undefined;
        this._callback = [];
        this._data = data;
    }
    set(data) {
        this._data = data;
        for (const callback of this._callback) {
            callback(data);
        }
        this._callback = [];
    }
    clear() {
        this._data = undefined;
    }
    async once() {
        if (this._data !== undefined) {
            return this._data;
        }
        else {
            return new Promise((resolve, reject) => {
                const callback = () => {
                    resolve(this._data);
                };
                this._callback.push(callback);
            });
        }
    }
}
exports.Waiter = Waiter;
//# sourceMappingURL=Waiter.js.map