import { AsyncAction } from './AsyncAction'; import { AsyncScheduler } from './AsyncScheduler'; /** * * Async Scheduler * * Schedule task as if you used setTimeout(task, duration) * * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating * in intervals. * * If you just want to "defer" task, that is to perform it right after currently * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`), * better choice will be the {@link asapScheduler} scheduler. * * ## Examples * Use async scheduler to delay task * ```ts * import { asyncScheduler } from 'rxjs'; * * const task = () => console.log('it works!'); * * asyncScheduler.schedule(task, 2000); * * // After 2 seconds logs: * // "it works!" * ``` * * Use async scheduler to repeat task in intervals * ```ts * import { asyncScheduler } from 'rxjs'; * * function task(state) { * console.log(state); * this.schedule(state + 1, 1000); // `this` references currently executing Action, * // which we reschedule with new state and delay * } * * asyncScheduler.schedule(task, 3000, 0); * * // Logs: * // 0 after 3s * // 1 after 4s * // 2 after 5s * // 3 after 6s * ``` */ export const asyncScheduler = new AsyncScheduler(AsyncAction); /** * @deprecated renamed. Use {@link asyncScheduler} */ export const async = asyncScheduler;