You have a pipe that lets you run values through it, one at a time, but at any given time. You can push things through it (observer.next(thing)) at one end and have one or more watcher function look at them on the other end (observable.subscribe(watcher)).

That single pipe alone is not very powerful, but a) you can have as many of these as you want and b) you also have other special pipes, called operators, which you can connect to this pipes in order to much more powerful things with them, for example combine the stuff of multiple pipes, filter them, wait for things to fall in place and so on. Not to forget c), you also get functions to create those pipes from usual asynchronous actions, like events or Promises.

 
 
Classic DEV Post from Jun 4 '18

Who's looking for open source contributors? (June 4 edition)

Please shamelessly promote your project. Everyone who posted in previous weeks is welcome back this week, as always.

Join dev.to

Be a better developer. Free forever.