UNPKG

@meterio/flex-framework

Version:

A library implements Meter Flex interface

40 lines 2.39 kB
"use strict"; 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==