@meterio/flex-framework
Version:
A library implements Meter Flex interface
40 lines • 2.39 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.InterruptedError = exports.PromInt = void 0;
/** class to make promise interruptable */
class PromInt {
constructor() {
this.rejectors = new Set();
}
/**
* interrupt all wrapped promises
*/
interrupt() {
const rejectors = this.rejectors;
this.rejectors = new Set();
rejectors.forEach(r => r(new InterruptedError()));
}
/**
* wrap the promise
* @param p the given promise
* @returns the wrapped promise which will raise InterruptedError on interruption
*/
wrap(p) {
return new Promise((resolve, reject) => {
const rejectors = this.rejectors;
rejectors.add(reject);
p.then(resolve)
.catch(reject)
.then(() => rejectors.delete(reject));
});
}
}
exports.PromInt = PromInt;
class InterruptedError extends Error {
constructor() {
super('promise interrupted');
}
}
exports.InterruptedError = InterruptedError;
InterruptedError.prototype.name = 'InterruptedError';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcml2ZXIvcHJvbWludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwQ0FBMEM7QUFDMUMsTUFBYSxPQUFPO0lBQXBCO1FBQ1ksY0FBUyxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFBO0lBMkJ2RCxDQUFDO0lBekJHOztPQUVHO0lBQ0ksU0FBUztRQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUE7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBRTFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBSSxDQUFhO1FBQ3hCLE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtZQUNoQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBRXJCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUNWLEtBQUssQ0FBQyxNQUFNLENBQUM7aUJBQ2IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7Q0FDSjtBQTVCRCwwQkE0QkM7QUFFRCxNQUFhLGdCQUFpQixTQUFRLEtBQUs7SUFDdkM7UUFDSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0NBQ0o7QUFKRCw0Q0FJQztBQUVELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUEifQ==
;