simonflex-framework
Version:
A library implements Meter Flex interface
39 lines • 2.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
/** 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcml2ZXIvcHJvbWludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDBDQUEwQztBQUMxQyxNQUFhLE9BQU87SUFBcEI7UUFDWSxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUE7SUEyQnZELENBQUM7SUF6Qkc7O09BRUc7SUFDSSxTQUFTO1FBQ1osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFFMUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksSUFBSSxDQUFJLENBQWE7UUFDeEIsT0FBTyxJQUFJLE9BQU8sQ0FBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1lBQ2hDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7WUFFckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ1YsS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDYixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQzdDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKO0FBNUJELDBCQTRCQztBQUVELE1BQWEsZ0JBQWlCLFNBQVEsS0FBSztJQUN2QztRQUNJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7Q0FDSjtBQUpELDRDQUlDO0FBRUQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQSJ9
;