12345678910111213141516171819202122232425262728293031323334353637
  1. import { AsapScheduler } from './AsapScheduler';
  2. /**
  3. *
  4. * Asap Scheduler
  5. *
  6. * <span class="informal">Perform task as fast as it can be performed asynchronously</span>
  7. *
  8. * `asap` scheduler behaves the same as {@link async} scheduler when you use it to delay task
  9. * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing
  10. * code to end and then it will try to execute given task as fast as possible.
  11. *
  12. * `asap` scheduler will do its best to minimize time between end of currently executing code
  13. * and start of scheduled task. This makes it best candidate for performing so called "deferring".
  14. * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves
  15. * some (although minimal) unwanted delay.
  16. *
  17. * Note that using `asap` scheduler does not necessarily mean that your task will be first to process
  18. * after currently executing code. In particular, if some task was also scheduled with `asap` before,
  19. * that task will execute first. That being said, if you need to schedule task asynchronously, but
  20. * as soon as possible, `asap` scheduler is your best bet.
  21. *
  22. * @example <caption>Compare async and asap scheduler</caption>
  23. *
  24. * Rx.Scheduler.async.schedule(() => console.log('async')); // scheduling 'async' first...
  25. * Rx.Scheduler.asap.schedule(() => console.log('asap'));
  26. *
  27. * // Logs:
  28. * // "asap"
  29. * // "async"
  30. * // ... but 'asap' goes first!
  31. *
  32. * @static true
  33. * @name asap
  34. * @owner Scheduler
  35. */
  36. export declare const asap: AsapScheduler;