UNPKG

mst-effect

Version:

Designed to be used with MobX-State-Tree to create asynchronous actions using RxJS.

16 lines (15 loc) 496 B
import { addDisposer } from 'mobx-state-tree'; import { Subject } from 'rxjs'; import { subscribe } from './utils'; export function effect(self, factory) { const payloadSource = new Subject(); const effect$ = factory(payloadSource.asObservable()); const subscription = subscribe(self, factory, effect$); addDisposer(self, () => { payloadSource.complete(); subscription.unsubscribe(); }); return (payload) => { payloadSource.next(payload); }; }