UNPKG

simonflex-framework

Version:

A library implements Meter Flex interface

39 lines 2.33 kB
"use strict"; 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