UNPKG

ix

Version:

The Interactive Extensions for JavaScript

1 lines 1.66 kB
{"version":3,"sources":["scheduler.ts"],"names":[],"mappings":"AAQA,MAAM,kBAAkB;IAItB,YAAY,MAAkB;QAHvB,mBAAc,GAAG,KAAK,CAAC;QAI5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IAC3B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,IAAI,OAAO,CAAO,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ,CAAC,MAAkB,EAAE,OAAe;QAC1C,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;CACF","file":"scheduler.js","sourcesContent":["import { Subscription } from './subscription';\n\nexport interface Scheduler {\n readonly now: number;\n delay(time: number): Promise<void>;\n schedule(action: () => void, dueTime: number): Subscription;\n}\n\nclass ActionSubscription implements Subscription {\n public isUnsubscribed = false;\n private _action: () => void;\n\n constructor(action: () => void) {\n this._action = action;\n }\n\n unsubscribe() {\n if (!this.isUnsubscribed) {\n this.isUnsubscribed = true;\n this._action();\n }\n }\n}\n\nexport class DefaultScheduler implements Scheduler {\n get now() {\n return Date.now();\n }\n\n delay(dueTime: number) {\n return new Promise<void>(res => setTimeout(res, dueTime));\n }\n\n schedule(action: () => void, dueTime: number): Subscription {\n const id = setTimeout(() => action(), dueTime);\n return new ActionSubscription(() => clearTimeout(id));\n }\n}\n"]}