Skip to content

batch.ts

Назначение файла

Модуль предоставляет функцию batch(), которая объединяет несколько реактивных изменений в один пакет выполнения.

Общая информация

Когда внутри одного действия нужно обновить несколько атомов, batch() откладывает запуск эффектов до завершения callback-функции. Это позволяет избежать промежуточных состояний и лишних уведомлений наблюдателей.

Концептуальная архитектура

batch() является тонкой публичной оберткой над RUNTIME.batch(). Во время выполнения runtime временно ставит на паузу очереди sync-, async- и microtask-задач, а затем возобновляет их после завершения действия.

Описание публичного API

batch<T>(action: () => T): T

  • action: функция, внутри которой выполняются несколько обновлений.
  • Возвращает результат выполнения action.
  • Гарантирует отложенное выполнение реактивных эффектов до конца batch-блока.

Примеры использования

ts
import { atom, batch, effect } from '@nrgyjs/core';

const a = atom(1);
const b = atom(2);

effect([a, b], ([x, y]) => {
  console.log(x + y);
});

batch(() => {
  a.set(10);
  b.set(20);
});