UNPKG

2.08 kBTypeScriptView Raw
1import { QueueScheduler } from './QueueScheduler';
2/**
3 *
4 * Queue Scheduler
5 *
6 * <span class="informal">Put every next task on a queue, instead of executing it immediately</span>
7 *
8 * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.
9 *
10 * When used without delay, it schedules given task synchronously - executes it right when
11 * it is scheduled. However when called recursively, that is when inside the scheduled task,
12 * another task is scheduled with queue scheduler, instead of executing immediately as well,
13 * that task will be put on a queue and wait for current one to finish.
14 *
15 * This means that when you execute task with `queue` scheduler, you are sure it will end
16 * before any other task scheduled with that scheduler will start.
17 *
18 * ## Examples
19 * Schedule recursively first, then do something
20 * ```ts
21 * import { queueScheduler } from 'rxjs';
22 *
23 * queueScheduler.schedule(() => {
24 * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue
25 *
26 * console.log('first');
27 * });
28 *
29 * // Logs:
30 * // "first"
31 * // "second"
32 * ```
33 *
34 * Reschedule itself recursively
35 * ```ts
36 * import { queueScheduler } from 'rxjs';
37 *
38 * queueScheduler.schedule(function(state) {
39 * if (state !== 0) {
40 * console.log('before', state);
41 * this.schedule(state - 1); // `this` references currently executing Action,
42 * // which we reschedule with new state
43 * console.log('after', state);
44 * }
45 * }, 0, 3);
46 *
47 * // In scheduler that runs recursively, you would expect:
48 * // "before", 3
49 * // "before", 2
50 * // "before", 1
51 * // "after", 1
52 * // "after", 2
53 * // "after", 3
54 *
55 * // But with queue it logs:
56 * // "before", 3
57 * // "after", 3
58 * // "before", 2
59 * // "after", 2
60 * // "before", 1
61 * // "after", 1
62 * ```
63 */
64export declare const queueScheduler: QueueScheduler;
65/**
66 * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.
67 */
68export declare const queue: QueueScheduler;
69//# sourceMappingURL=queue.d.ts.map
\No newline at end of file