Generate a Callbag from a function. Whenever the function is called, the source will emit what the function returned.
npm install callbag-from-function
const {source, emitter, finish} = fromFunction(someFunc);
Now, whenever you call emitter with some ...args, source will emit what someFunc returns when called with ...args.
The emitter will also return the emitted value.
If no function is passed in, an identity function will be used.
The source is "hot" (using callbag-share), meaning it can take many listeners.
If you want to end the callbag-from-function use finish function.
Wrapping an action creator in an app with a state stream.
const forEach = require('callbag-for-each');
const fromFunction = require('callbag-from-function');
const newName = str => ({type: 'NEWNAME', value: str});
const {source: newName$, emitter: wrappedNewName} = fromFunction(newName);
forEach(a => console.log("New name:", a.value))(newName$);
wrappedNewName("Batman"); // New name: BatmanWe get the latest name, 'New name: Batman', when we call finish function.
const fromFunction = require('callbag-from-function');
const {pipe, forEach} = require('callbag-basics');
const last = require('callbag-last');
const newName = str => ({type: 'NEWNAME', value: str});
const {
source: newName$,
emitter: wrappedNewName,
finish
} = fromFunction(newName);
const source = pipe(
newName$,
last(),
forEach(val => console.log("New name:", val.value))
);
wrappedNewName("Robin");
wrappedNewName("Batman"); // New name: Batman
finish();