UNPKG

@pushrocks/smartpromise

Version:

simple promises and Deferred constructs

37 lines 2.58 kB
export class Deferred { claim() { if (this.claimed) { throw new Error('Deferred already claimed'); } this.claimed = true; } get duration() { if (this.stoppedAt) { return this.stoppedAt - this.startedAt; } else { return Date.now() - this.startedAt; } } constructor() { this.claimed = false; this.promise = new Promise((resolve, reject) => { this.resolve = (valueArg) => { this.status = 'fulfilled'; this.stoppedAt = Date.now(); resolve(valueArg); }; this.reject = (reason) => { this.status = 'rejected'; this.stoppedAt = Date.now(); reject(reason); }; this.startedAt = Date.now(); this.status = 'pending'; }); } } export const defer = () => { return new Deferred(); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwcm9taXNlLmNsYXNzZXMuZGVmZXJyZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHByb21pc2UuY2xhc3Nlcy5kZWZlcnJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQU8sUUFBUTtJQU1aLEtBQUs7UUFDVixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUlELElBQVcsUUFBUTtRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDeEM7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQ7UUFsQk8sWUFBTyxHQUFHLEtBQUssQ0FBQztRQW1CckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsUUFBNEIsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO2dCQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pCLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEdBQU0sRUFBRTtJQUMzQixPQUFPLElBQUksUUFBUSxFQUFLLENBQUM7QUFDM0IsQ0FBQyxDQUFDIn0=