Методы

allSettled(unit, {scope, params?})

Вызывает предоставленный юнит в переданном скоупе и ожидает завершения всех запущенных юнитов.

Формула

allSettled<T>(unit: Event<T>, {scope: Scope, params?: T}): Promise<void>
allSettled<T>(unit: Effect<T, Done, Fail>, {scope: Scope, params?: T}): Promise<
| {status: 'done'; value: Done}
| {status: 'fail'; value: Fail}
>
allSettled<T>(unit: Store<T>, {scope: Scope, params?: T}): Promise<void>

Аргументы

  1. unit: Event или Effect, который нужно вызвать.
  2. scope: Scope — скоуп.
  3. params: параметры, передаваемые в unit.
Обратите внимание

Возвращаемое значение для эффекта поддерживается с версии effector 21.4.0.

Примеры

const scope = fork();
const event = createEvent<number>();
event.watch(console.log);
await allSettled(event, { scope, params: 123 }); // в консоль выведется 123
const scopeA = fork();
const scopeB = fork();
const $store = createStore(0);
const inc = createEvent<number>();
await allSettled($store, { scope: scopeA, params: 5 });
await allSettled($store, { scope: scopeB, params: -5 });
$store.watch(console.log);
await allSettled(inc, { scope: scopeA, params: 2 }); // в консоль выведется 7
await allSettled(inc, { scope: scopeB, params: 2 }); // в консоль выведется -3

allSettled(scope)

Проверяет предоставленный скоуп на наличие текущих вычислений и ожидает их завершения.

Формула

allSettled<T>(scope): Promise<void>

Аргументы

  1. scope: Scope — скоуп.
Начиная с

effector 22.5.0.

Примеры

Использование в тестах

Тесты, которые проверяют интеграцию с внешним реактивным API.

import {createEvent, sample, fork, scopeBind, allSettled} from 'effector'
test('интеграция с externalSource', async () => {
const scope = fork()
const updated = createEvent()
sample({
clock: updated,
target: someOtherLogicStart,
})
// 1. Подписываем событие на внешний источник
const externalUpdated = scopeBind(updated, {scope})
externalSource.listen(() => externalUpdates())
// 2. Запускаем обновление внешнего источника
externalSource.trigger()
// 3. Ожидаем завершения всех запущенных вычислений в области видимости effector, даже если они были запущены не самим effector
await allSettled(scope)
// 4. Проверяем что-либо как обычно
expect(...).toBe(...)
})
Перевод поддерживается сообществом

Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.

Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.

Соавторы