| let nextHandle = 1; | |
| const tasksByHandle: { [handle: string]: () => void } = {}; | |
| function runIfPresent(handle: number) { | |
| const cb = tasksByHandle[handle]; | |
| if (cb) { | |
| cb(); | |
| } | |
| } | |
| export const Immediate = { | |
| setImmediate(cb: () => void): number { | |
| const handle = nextHandle++; | |
| tasksByHandle[handle] = cb; | |
| Promise.resolve().then(() => runIfPresent(handle)); | |
| return handle; | |
| }, | |
| clearImmediate(handle: number): void { | |
| delete tasksByHandle[handle]; | |
| }, | |
| }; |