trtc-electron-sdk
Version:
trtc electron sdk
59 lines (58 loc) • 1.84 kB
JavaScript
;
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;