--- /dev/null
+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
\ No newline at end of file