@luvies/business-rules
Version:
A JS-expression-based rules engine
32 lines • 986 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class ResultListener {
constructor() {
this._results = new Map();
this._listeners = [];
}
onResult(id, result) {
const listeners = this._listeners.filter(listener => {
return listener.target === id;
});
for (const listener of listeners) {
listener.resolve(result);
this._listeners.splice(this._listeners.indexOf(listener), 1);
}
this._results.set(id, result);
}
async wait(id) {
if (this._results.has(id)) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
return this._results.get(id);
}
return new Promise(resolve => {
this._listeners.push({
resolve,
target: id,
});
});
}
}
exports.ResultListener = ResultListener;
//# sourceMappingURL=result-listener.js.map