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: Batman
We 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();