Методы
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>
Аргументы
unit
: Event или Effect, который нужно вызвать.scope
: Scope — скоуп.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>
Аргументы
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. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.