Get unlimited public & private packages + team-based management with npm Teams.Learn more »

@reactive-js/rx

0.0.28 • Public • Published

@reactive-js/rx

Reactive-Js's core reactive and interactive programming API.

Reactive-Js unifies reactive and interactive programming into a single API, defined by two core interfaces: ObservableLike and EnumerableLike. In addition, basic utilities for safely creating, transforming, and using ObservableLike and EnumerableLike streams are provided.

ObservableLike streams are always asynchronous. Subscribing only sets up subscription, but does not synchronously produce values (doing so is a programming error). Instead scheduling is deeply integrated into the SubscriberLike type. During subscription setup, ObservableLike sources schedule work to be done in the future, such as iterating through an iterable source. This enables tight integrationg with platform specific scheduling implementations such as React's internal scheduler.

A note on backpressure

While reactive-js does not provide an API to directly apply backpressure to an ObservableLike source, the library does provided several primitives that can be used to achieve the effect.

CPU bound backpressure can be achieved via the @reactive-js/scheduler SchedulerLike interface's support for cooperative multi-tasking. Specifically, ObservableLike sources must honor a SchedulerLike's shouldYield requests, yielding control back to the scheduler, and returning a SchedulerContinuationLike if additional work is to be completed.

A second approach is provided by the @reactive-js/ix package, which defines a push/pull interface for iterating through asynchronous producers.

Installation

via npm

npm install @reactive-js/rx

via yarn

yarn add @reactive-js/rx

Usage

import { subscribe } from "@reactive-js/rx";
import { pipe } from "@reactive-js/pipe";
 
const observableSource;
const platformScheduler;
 
// Setup a subscription to the observableSource using the platform scheduler
const subscription = pipe(observableSource, subscribe(platformScheduler));
 
// ...later in the future
 
// Dispose the observable subscription
subscription.dispose();

Documentation

API documentation is available here.

Install

npm i @reactive-js/rx

DownloadsWeekly Downloads

217

Version

0.0.28

License

MIT

Unpacked Size

429 kB

Total Files

483

Last publish

Collaborators

  • avatar