如何理解RXjs

目錄

1.背景介紹

2.知識剖析

3.常見問題

4.解決方案

5.編碼實戰

6.擴展思考

7.參考文獻

8.更多討論

1.背景介紹

RxJS 是使用 Observables 的響應式編程的庫,它使編寫異步或基於回調的代碼更容易。

2.知識剖析

什麼是RxJS,如何理解有什麼作用?

Observable,Observer,Subscription,Operators ,subject,Schedulers是什麼

可以把 RxJS 當做是用來處理事件的 Lodash


它將一切數據,包括HTTP請求,DOM事件或者普通數據等包裝成流的形式,然後用強大豐富的操作符對流進行處理,使你能以同步編程的方式處理異步數據,並組合不同的操作符來輕鬆優雅的實現你所需要的功能

ReactiveX 結合了 觀察者模式、迭代器模式 和 使用集合的函數式編程,以滿足以一種理想方式來管理事件序列所需要的一切

Observable (可觀察對象): 表示一個概念,這個概念是一個可調用的未來值或事件的集合。 Observer (觀察者): 一個回調函數的集合,它知道如何去監聽由 Observable 提供的值。 Subscription (訂閱): 表示 Observable 的執行,主要用於取消 Observable 的執行。 Operators (操作符): 採用函數式編程風格的純函數 (pure function),使用像 map、filter、concat、flatMap 等這樣的操作符來處理集合。 Subject (主體): 相當於 EventEmitter,並且是將值或事件多路推送給多個 Observer 的唯一方式。 Schedulers (調度器): 用來控制併發並且是中央集權的調度員,允許我們在發生計算時進行協調

3.常見問題

如何理解RXjs的流

4.解決方案

什麼是流?這裏我們不用專業術語來解釋,用生活中大家熟悉的的例子來類比,比如“河流”。


有流向:


RxJS中數據的流向也是固定的,就是從發送者到訂閱者。基本都如下面這種形式:

            from(Promise.resolve(1)) // 流的源頭
            ......
            .subscribe(x => console.log(x)); // 流的終點</p>

有分支:


大的河流一般有幹流和支流,大大小小的支流匯入幹流。 RxJS中的數據則可以通過操作符將數據流進行聚合或拆分:

// 流的聚合 mergeMap(from(Promise.resolve(1)), from(Promise.resolve(2))) ...... .subscribe(x => console.log(x))
            // 流的拆分
            const obs$ = from(Promise.resolve(1)
            obs$.subscribe(x => console.log(x))
            obs$.subscribe(x => {
            // do sth
            })/
        </code>

5.編碼實戰

6.擴展思考

什麼是lodash

Lodash 是一個具有一致接口、模塊化、高性能等特性的 JavaScript 工具庫

7.參考文獻

https://cn.rx.js.org/manual/overview.html#-

8 更多討論

1.什麼是Observer?

答: Observer(觀察者)是Observable(可觀察對象)推送數據的消費者。在RxJS中,Observer是一個由回調函數組成的對象,鍵名分別爲next、error 和 complete,以此接受Observable推送的不同類型的通知

2.什麼是Subscription?

Subscription是一個代表可以終止資源的對象,表示一個Observable的執行過程。Subscription有一個重要的方法:unsubscribe。這個方法不需要傳入參數,調用後便會終止相應的資源。在RxJS以前的版本中,

3.Subject?

Subject是一種能夠發射數據給多個observer的Observable, 這讓Subject看起來就好像是EventEmitter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章