combineEvents
import { combineEvents } from 'patronum';// orimport { combineEvents } from 'patronum/combine-events';
combineEvents(events)
Motivation
Method allows to trigger event when all of given events are triggered, with payloads of given events
Formulae
const target = combineEvents({ key1: event1, key2: event2 });
- When all events are triggered, trigger
target
with{key1: firstPayload, key2: secondPayload}
const target = combineEvents([event1, event2]);
- When all events are triggered, trigger
target
with[firstPayload, secondPayload]
Arguments
events
— Object or array with events
Returns
target
— Event with the same shape asevents
, that triggered after allevents
triggered
combineEvents({ events, reset, target })
Motivation
Object form which allow to pass reset
unit or target
Formulae
const target = combineEvents({ events: { key1: event1, key2: event2, }, reset: resetUnit, target: targetUnit,});
- When all events are triggered, trigger
target
with{key1: firstPayload, key2: secondPayload}
const target = combineEvents({ events: [event1, event2], reset: resetUnit, target: targetUnit,});
- When all events are triggered, trigger
target
with[firstPayload, secondPayload]
Arguments
events
— Object or array with eventsreset
(Unit<any>)
- Optional. Any unit which will reset state ofcombineEvents
and collecting of payloads will start from scratchtarget
(Unit<Shape>)
- Optional. Any unit with type matchingevents
shape
Returns
target
— Whentarget
option is not defined, will return new event with the same shape asevents
, otherwisetarget
unit will return
Example
const first = createEvent<number>();const second = createEvent<string>();const third = createEvent<boolean>();const target = createEvent<{ a: number; b: string; c: boolean }>();const reset = createEvent();
combineEvents({ events: { a: first, b: second, c: third, }, reset, target,});
target.watch((object) => { console.log('first event data', object.a); console.log('second event data', object.b); console.log('third event data', object.c);});
first(15); // nothingsecond('wow'); // nothingthird(false); // target triggered with {a: 15, b: 'wow', c: false}
first(10);second('-');
reset(); // combineEvents state is erased
third(true); // nothing, as it's a first saved payloadfirst(0);second('ok'); // target triggered with {a: 0, b: 'ok', c: true}