most-subject
Subjects for @most/core
Get it
yarn add most-subject# or npm install --save most-subject
API Documentation
create<A>(): Subject<A, A>
create<A, B>(f: (stream: Stream<A>) => Stream<B>): Subject<A, B>
Returns an tuple containing a AttachSink
and a Stream
. AttachSink
can be
used to imperatively control the events flowing through the Stream
or
declaratively using attach
. Optionally, a function can be applied to the Stream,
and the return value of that function will be returned as the second tuple value.
See an example
// Create a new `Scheduler` for use in our application.// Usually, you will want to only have one Scheduler, and it should be shared // across your application // Create our sink and our stream.// NOTE: stream is the resulting value of tap(console.log, stream). // Pushes events into our stream. // Activate our stream.runEffectsstream, scheduler // Simulate asynchronous data fetching,// and then push values into our stream.Promise.resolve .thendata.forEachnext
attach<A>(attachSink: AttachSink<A>, stream: Stream<A>): Stream<A>
Create circular dependencies with additional logic to help avoid memory leaks.
WARNING: There isn't any logic for breaking infinite loops.
See an example
// Create a new Scheduler for use in our application.// Usually, you will want to only have one Scheduler, and it should be shared // across your application. // Listen to our stream.// It will log 1, 2, and 3.runEffectstapconsole.log, take3, stream, scheduler attachorigin
event<A>(time: Time, value: A, sink: Sink<A>): void
A curried function for calling Sink.event(time, value)
.
error(time: Time, error: Error, sink: Sink<any>): void
A curried function for calling Sink.error(time, error)
.
end(time: Time, sink: Sink<any>): void
A curried function for calling Sink.end(time)
.
Subject<A, B>
AttachSink<A>