Buckets:
| import { Scheduler } from '../Scheduler'; | |
| import { Action } from './Action'; | |
| import { AsyncAction } from './AsyncAction'; | |
| import { TimerHandle } from './timerHandle'; | |
| export class AsyncScheduler extends Scheduler { | |
| public actions: Array<AsyncAction<any>> = []; | |
| /** | |
| * A flag to indicate whether the Scheduler is currently executing a batch of | |
| * queued actions. | |
| * @internal | |
| */ | |
| public _active: boolean = false; | |
| /** | |
| * An internal ID used to track the latest asynchronous task such as those | |
| * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and | |
| * others. | |
| * @internal | |
| */ | |
| public _scheduled: TimerHandle | undefined; | |
| constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) { | |
| super(SchedulerAction, now); | |
| } | |
| public flush(action: AsyncAction<any>): void { | |
| const { actions } = this; | |
| if (this._active) { | |
| actions.push(action); | |
| return; | |
| } | |
| let error: any; | |
| this._active = true; | |
| do { | |
| if ((error = action.execute(action.state, action.delay))) { | |
| break; | |
| } | |
| } while ((action = actions.shift()!)); // exhaust the scheduler queue | |
| this._active = false; | |
| if (error) { | |
| while ((action = actions.shift()!)) { | |
| action.unsubscribe(); | |
| } | |
| throw error; | |
| } | |
| } | |
| } | |
Xet Storage Details
- Size:
- 1.32 kB
- Xet hash:
- a90d551bf07f30e623a0aac34b9a01b9dcc27e13d520f721cdac4c2884ecd4b9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.