import { Scheduler } from '../Scheduler'; export class AsyncScheduler extends Scheduler { constructor(SchedulerAction, now = Scheduler.now) { super(SchedulerAction, () => { if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { return AsyncScheduler.delegate.now(); } else { return now(); } }); this.actions = []; this.active = false; this.scheduled = undefined; } schedule(work, delay = 0, state) { if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { return AsyncScheduler.delegate.schedule(work, delay, state); } else { return super.schedule(work, delay, state); } } flush(action) { const { actions } = this; if (this.active) { actions.push(action); return; } let error; this.active = true; do { if (error = action.execute(action.state, action.delay)) { break; } } while (action = actions.shift()); this.active = false; if (error) { while (action = actions.shift()) { action.unsubscribe(); } throw error; } } } //# sourceMappingURL=AsyncScheduler.js.map