queue

Queue Scheduler

const queue: any;

Description

Put every next task on a queue, instead of executing it immediately

queue scheduler, when used with delay, behaves the same as async scheduler.

When used without delay, it schedules given task synchronously - executes it right when it is scheduled. However when called recursively, that is when inside the scheduled task, another task is scheduled with queue scheduler, instead of executing immediately as well, that task will be put on a queue and wait for current one to finish.

This means that when you execute task with queue scheduler, you are sure it will end before any other task scheduled with that scheduler will start.

Examples

Schedule recursively first, then do something

import { queueScheduler } from 'rxjs'; queueScheduler.schedule(() => { queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue console.log('first'); }); // Logs: // "first" // "second"

Reschedule itself recursively

import { queueScheduler } from 'rxjs'; queueScheduler.schedule(function(state) { if (state !== 0) { console.log('before', state); this.schedule(state - 1); // `this` references currently executing Action, // which we reschedule with new state console.log('after', state); } }, 0, 3); // In scheduler that runs recursively, you would expect: // "before", 3 // "before", 2 // "before", 1 // "after", 1 // "after", 2 // "after", 3 // But with queue it logs: // "before", 3 // "after", 3 // "before", 2 // "after", 2 // "before", 1 // "after", 1