- Notifications
You must be signed in to change notification settings - Fork20
An Observable for JavaScript that never calls complete or error
License
material-motion/indefinite-observable-js
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
There are a lot of great Observable implementations, but they're baked into featureful libraries which contribute to both complexity and filesize. We wanted the simplest-possible Observable implementation, with no operators, no fancy scheduling. The entire thing is basicallythree statements insubscribe.
Indefinite Observable is a subset of theTC39 Observable proposal that nevercompletes orerrors. It implements theminimal-necessary functionality, but it should be completely interchangeable with the TC39 proposal for the subset that it does implement.
If you want a complete Observables library that works out-of-the-box, check outxstream,RxJS,Most,Bacon, orKefir. If you want to build your own Observables library that includes just the functionality you need, tryIndefinite Observable.
import{IndefiniteObservable}from'indefinite-observable';constmoveEvent$=newIndefiniteObservable((observer)=>{// Whenever you want the observable to dispatch a value, call// observer.next(value).element.addEventListener('pointermove',observer.next);// Return a function that will perform any necessary clean up when the// observable is unsubscribed from.return()=>{element.removeEventListener('pointermove',observer.next);}});// To receive the values dispatched by an observable, pass an observer to its// subscribe method. An observer is just an object with a next method.//// subscribe returns a unsubscribe function. Call that when you no longer want// to receive dispatches from the observable.constunsubscribe=moveEvent$.subscribe({next(moveEvent){console.log('got a pointer event: ',moveEvent);}});
Learn more aboutHow Indefinite Observables work.
yarn add indefinite-observableor include as a script tag:
<scripttype = "module">import{IndefiniteObservable}from"https://ajax.googleapis.com/ajax/libs/indefinite-observable/2.0.1/indefinite-observable.bundle.js"</script>
This library aims to be as simple as possible, so modifications will be rare. Reasons we might make changes are limited to:
- bugs, or
- remaining compatible with the subset of the Observable spec that we support.
If you'd like to add operators, static methods, or other features, we invite you to depend upon us subclassingIndefiniteObservable in your own module. In fact,that's how we add features too.
Of course, we welcome improvements to the examples and documentation in this repo.
Our source is available in 3 flavors: a TypeScript module, a JavaScript module, and a JavaScript bundle. Any changes made to the first need to be reflected in the other two. This should be handled for you automatically via a pre-commit hook. If you have a clean working copy after committing, you're good. If not, amend the commit with the new build before pushing.
If you need to bundle it independently, run
yarn run buildyarn run testAbout
An Observable for JavaScript that never calls complete or error
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.