| import { Scheduler } from '../Scheduler'; |
| export class AsyncScheduler extends Scheduler { |
| constructor(SchedulerAction, now = Scheduler.now) { |
| super(SchedulerAction, now); |
| this.actions = []; |
| this._active = false; |
| } |
| 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 |