UNPKG

trtc-electron-sdk

Version:

trtc electron sdk

59 lines (58 loc) 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class PromiseStore { constructor() { this.logPrefix = '[PromiseStore]'; this.promiseStore = new Map(); } addPromise(key, resolve, reject) { if (!this.promiseStore.has(key)) { this.promiseStore.set(key, []); } const storedPromises = this.promiseStore.get(key); storedPromises === null || storedPromises === void 0 ? void 0 : storedPromises.push({ resolve, reject }); } resolvePromise(key, value) { var _a; const storedPromises = (_a = this.promiseStore) === null || _a === void 0 ? void 0 : _a.get(key); if (storedPromises) { storedPromises.forEach(({ resolve }) => { resolve(value); }); this.promiseStore.delete(key); return true; } else { return false; } } rejectPromise(key, reason) { var _a; const storedPromises = (_a = this.promiseStore) === null || _a === void 0 ? void 0 : _a.get(key); if (storedPromises) { storedPromises.forEach(({ reject }) => { reject(reason); }); this.promiseStore.delete(key); return true; } else { return false; } } destroy() { this.promiseStore.forEach((value) => { value.forEach(({ reject }) => { reject({ code: Number.NEGATIVE_INFINITY, message: 'Instance destroyed, reject all pending promises', }); }); }); this.promiseStore.clear(); } } exports.default = PromiseStore;