All files / src/schedulers MicrotaskScheduler.ts

100% Statements 2/2
100% Branches 0/0
100% Functions 1/1
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31                                                18x 6x          
import { asyncScheduler } from "./asyncScheduler";
import { type Scheduler, type SchedulerFlush } from "./interface";
 
/**
 * A {@link Scheduler} that runs updates at most once per microtask (Promise).
 *
 * @category Schedulers
 *
 * @example
 * ```ts
 * import { writable, compute, MicrotaskScheduler } from "@embra/reactivity";
 *
 * const v1$ = writable(1);
 * const v2$ = writable(2);
 * const computed$ = compute((get) => get(v1$) + get(v2$));
 *
 * computed$.reaction(
 *   (value) => {
 *     console.log(value)
 *   },
 *   MicrotaskScheduler,
 * );
 * ```
 */
export const MicrotaskScheduler: Scheduler = /* @__PURE__ */ asyncScheduler(
  /* @__PURE__ */ ((tick: Promise<void>, flush: SchedulerFlush): Promise<void> => tick.then(flush)).bind(
    0,
    /* @__PURE__ */ Promise.resolve(),
  ),
);