[Javascript + rxjs] Introducing the Observable

In this lesson we will get introduced to the Observable type. An Observable is a collection that arrives over time. Observables can be used to model events, asynchronous requests, and animations. Observables can also be transformed, combined, and consumed using the Array methods we learned in the previous lessons. We can write powerful and expressive asynchronous programs using the few simple methods we‘ve learned so far.

Here is an example how to handle events normally:

var button = document.getElementById(‘button‘);

var handler = function(e){
    console.log(‘clicked‘);
};

button.addEventListener(‘click‘, handler);

So when fire the click event, in the console will log ‘clicked‘.

If we want to remove the event listener:

var button = document.getElementById(‘button‘);

var handler = function(e){
    console.log(‘clicked‘);
    button.removeEventListener(‘click‘, handler);
};

button.addEventListener(‘click‘, handler);

Now let see how can we achieve the same effect by using observable.

var Observable = Rx.Observable;

//Create click events by Observable
var clicks = Observable.fromEvent(button, ‘click‘);

//Then we are able to use forEach, concatAll, map, fliter function
clicks.forEach(function() {
    console.log(‘clicked‘);
});

How to remove the event listener:

var Observable = Rx.Observable;

//Create click events by Observable
var clicks = Observable.fromEvent(button, ‘click‘);

//Then we are able to use forEach, concatAll, map, fliter function
//The function return an subscription object, which we can use to call dispose() method to remove listener
var subscription = clicks.forEach(function() {
    console.log(‘clicked‘);
    subscription.dispose();
});

forEach method actually has three callback function which are onNext, onError, onCompleted:

var Observable = Rx.Observable;

//Create click events by Observable
var clicks = Observable.fromEvent(button, ‘click‘);

//Then we are able to use forEach, concatAll, map, fliter function
//The function return an subscription object, which we can use to call dispose() method to remove listener
var subscription = clicks.forEach(function onNext() {
    console.log(‘clicked‘);
    subscription.dispose();
}, function onError() {
    console.log(‘error‘);
}, function onCompleted() {
    console.log(‘complete‘);
});

[doc](https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/subscribe.md)

时间: 2024-08-30 08:00:24

[Javascript + rxjs] Introducing the Observable的相关文章

[Javascript + rxjs] Using the map method with Observable

Like an array, Observable has a map method that allows us to transform a sequence into a new Observable. var Observable = Rx.Observable; //Create click events by Observable var clicks = Observable.fromEvent(button, 'click'); var points = clicks.map(f

[Javascript + rxjs] Simple drag and drop with Observables

Armed with the map and concatAll functions, we can create fairly complex interactions in a simple way. We will use Observable to create a simple drag and drop example with basic DOM elements. <!DOCTYPE html> <html> <head lang="en"

[RxJS] Subject: an Observable and Observer hybrid

This lesson teaches you how a Subject is simply a hybrid of Observable and Observer which can act as a bridge between the source Observable and multiple observers, effectively making it possible for multiple observers to share the same Observable exe

[rxjs] Creating An Observable with RxJS

Create an observable var Observable = Rx.Observable; var source = Observable.create(function(observe){ var person = { name: "Zhentian", message: "Hello World!" }; observe.onNext(person); observe.onCompleted(); }); var sub = source.subs

rxjs——subject和Observable的区别

一个 Observable 是可以被多个 observer 订阅的,只是每个订阅都是一个新的独立的 Observable execution : const { Observable } = Rx const clock$ = Observable.interval(1000).take(3); const observerA = { next(v) { console.log('A next: ' + v) } } const observerB = { next(v) { console.l

构建流式应用—RxJS详解

讲之前先说一点哈,插入的图片,不能正常显示,图片一半被遮盖了,如果想看,鼠标右击然后图片地址,图片另存为去看.如果有知道怎么解决的,可以在下面给我评论,我会及时的修改. 好啦,开始: 目录 常规方式实现搜索功能 RxJS · 流 Stream RxJS 实现原理简析 观察者模式 迭代器模式 RxJS 的观察者 + 迭代器模式 RxJS 基础实现 Observable Observer RxJS · Operators Operators ·入门 一系列的 Operators 操作 使用 RxJS

rxjs系列 -- Observale与Observer

在RxJS中,一个数据流的完整流向至少需要包含Observable和Observer.Observable是被观察者,Observer是观察者,Observer订阅Observable,Observable向Observer推送数据以完成整个过程. 可以说一个完整的RxJS数据流就是Observable和Observer之间的互动游戏. Observable实现了下面两种设计模式: 观察者模式迭代器模式 由于不是写设计模式的文章,所以一笔带过,感兴趣的可以自己看下相关的书,需要一提的是,任何一种

手把手教你用ngrx管理Angular状态

本文将与你一起探讨如何用不可变数据储存的方式进行Angular应用的状态管理 :ngrx/store--Angular的响应式Redux.本文将会完成一个小型简单的Angular应用,最终代码可以在这里下载. Angular应用中的状态管理 近几年,大型复杂Angular/AngularJS项目的状态管理一直是个让人头疼的问题.在AngularJS(1.x版本)中,状态管理通常由服务,事件,$rootScope混合处理.在Angular中(2+版本),组件通信让状态管理变得清晰一些,但还是有点复

Android RxJava使用介绍(一)概念

RxJava到底是什么?使用RxJava到底有什么好处呢?其实RxJava是ReactiveX中使用Java语言实现的版本,目前ReactiveX已经实现的语言版本有: Java: RxJava JavaScript: RxJS C#: Rx.NET C#(Unity): UniRx Scala: RxScala Clojure: RxClojure C++: RxCpp Ruby: Rx.rb Python: RxPY Groovy: RxGroovy JRuby:RxJRuby Kotlin