inFlight
import { inFlight } from 'patronum';// orimport { inFlight } from 'patronum/in-flight';inFlight(effects)
Motivation
Method allows to calculate total current in flight states of each passed effect. It is useful when you want to show pending state of complex process.
Formulae
$count = inFlight([fx1, fx2]);- Count all pending runs of effects in one store
Arguments
effects(Array<Effect<any, any, any>>)- array of any effects
Returns
$count(Store<number>)- Store with count of run effects in pending state
Example
import { createEffect } from 'effector';import { inFlight } from 'patronum/in-flight';
const loadFirst = createEffect().use(() => Promise.resolve(null));const loadSecond = createEffect().use(() => Promise.resolve(2));const $count = inFlight([loadFirst, loadSecond]);
$count.watch((count) => console.info(`count: ${count}`));// => count: 0
loadFirst();loadSecond();// => count: 2
loadSecond();loadSecond();// => count: 4
// Wait to resolve all effects// => count: 0inFlight({ domain })
Motivation
This overload allows to count effects in flight of the whole domain. It is useful when you want to show loading state of the whole application.
Formulae
$count = inFlight({ domain });- Count all pending runs of effects in passed domain in one store
Arguments
domain(Domain)- domain to count effects from
Returns
$count(Store<number>)- Store with count of run effects in pending state
Example
import { createDomain } from 'effector';import { inFlight } from 'patronum/in-flight';
const app = createDomain();const loadFirst = app.createEffect().use(() => Promise.resolve(null));const loadSecond = app.createEffect().use(() => Promise.resolve(2));const $count = inFlight({ domain: app });
$count.watch((count) => console.info(`count: ${count}`));// => count: 0
loadFirst();loadSecond();// => count: 2
loadSecond();loadSecond();// => count: 4
// Wait to resolve all effects// => count: 0inFlight({ effects: [] })
Motivation
This overload receives effects as an object. May be useful for additional clarity, but it’s longer to write
Formulae
$count = inFlight({ effects: [fx1, fx2] });- Count all pending runs of effects in one store
Arguments
effects(Array<Effect<any, any, any>>)- array of any effects
Returns
$count(Store<number>)- Store with count of run effects in pending state
Example
import { createEffect } from 'effector';import { inFlight } from 'patronum/in-flight';
const loadFirst = createEffect().use(() => Promise.resolve(null));const loadSecond = createEffect().use(() => Promise.resolve(2));const $count = inFlight({ effects: [loadFirst, loadSecond] });
$count.watch((count) => console.info(`count: ${count}`));// => count: 0
loadFirst();loadSecond();// => count: 2
loadSecond();loadSecond();// => count: 4
// Wait to resolve all effects// => count: 0