Rx.Net的核心知識點有哪些

這篇文章將為大家詳細講解有關(guān)Rx.Net的核心知識點有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

坡頭ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

何為Reactive Extensions(Rx)

Rx是一個遵循函數(shù)式編程的類庫,它引用觀察者以及迭代器設(shè)計模式對可觀察對象產(chǎn)生的數(shù)據(jù)進行異步消費。使用Rx,開發(fā)人員將使用LINQ運算符操作異步數(shù)據(jù)流,并使用調(diào)度程序參數(shù)化異步數(shù)據(jù)流中的并發(fā)性,簡單地說,Rx = Observables + LINQ + Schedulers。

使用Rx需要Nuget安裝System.Reactive Nuget包

Rx的使用場景

響應(yīng)式UI

UI界面上,用戶對一個綁定數(shù)據(jù)集合的控件進行關(guān)鍵字查詢。常規(guī)的流程是我們必須在等待用戶鍵盤按下指定的完成鍵(如回車)或鼠標點擊查詢按鈕后程序才開始執(zhí)行相應(yīng)的查詢處理。但假設(shè)需求變更:“用戶希望在每輸入一個關(guān)鍵字后就能及時將關(guān)鍵字相應(yīng)的查詢結(jié)果集綁定到控件” 如果面臨這個需求,那你會如何實現(xiàn)呢? 你會少不了定義相應(yīng)的全局狀態(tài)字段,少不了相應(yīng)的時間間隔刷新。我相信寫出來的代碼也會讓你很煩惱。 其實你有更好的選擇,那就是我們的主角Rx。

Rx 核心

Rx有兩個核心接口 IObservable<T>、IObserver<T>

IObservable<T>

先來看此接口的結(jié)構(gòu):

Rx.Net的核心知識點有哪些

IObservable<T>接口就提供一個Subscribe(訂閱)方法,入?yún)⑹且粋€觀察者對象接口。
我們可以將IObservable<T>稱之為被觀察者(可觀察者),IObserver<T>稱之為觀察者

通過可接口簽名可以看出被觀察者需要輸出T類型的對象。需要理解被觀察者IObservable<T>我們需要與現(xiàn)有的一些常規(guī)知識點做出比較,這里我們用IEnumerable<T>比較。
我想我們都使用過Linq,操作過IEnumerable<T>集合,IEnumerable<T>集合有個明顯的狀態(tài)就是它所存儲的元素是靜態(tài)的。集合內(nèi)的元素狀態(tài)除非代碼顯示的新增或刪除、修改,否則這個集合基本是靜態(tài)(數(shù)據(jù)未變動)的。但是IObservable<T>則不同,它的元素是根據(jù)被觀察者提供的數(shù)據(jù)而變動的(不可預(yù)測的),就好比在UI上你無法預(yù)測用戶的操作行為一樣。

下面這個表格可以看出兩者區(qū)別

IEnumerable

可方便的列舉集合元素值

IObservable

可觀察對象變動的值

IObserver<T>

IObserver<T>接口可以理解為消費被貫徹著提供數(shù)據(jù)的一個接口,它的三個方法決定了本次數(shù)據(jù)流的觀察行為的走向。
通俗理解就是被觀察者生成數(shù)據(jù),觀察者消費數(shù)據(jù)。

來看下IObserver<T>的結(jié)構(gòu)

Rx.Net的核心知識點有哪些

  • OnNext 表示消費新數(shù)據(jù)

  • OnError 表示觀察數(shù)據(jù)流出現(xiàn)異常

  • OnCompleted 表示明確關(guān)閉觀察數(shù)據(jù)流

代碼示例

下面代碼定義了一個可觀察的隊列,該隊列會提供給觀察者三個int類型的入?yún)?1、2、3 供觀察者對象的OnNext方法消費。 MyConsoleObserver(觀察者)在得到數(shù)據(jù)后打印出來。

Rx.Net的核心知識點有哪些

Rx.Net的核心知識點有哪些

通過示例代碼我們得知了Rx.Net的數(shù)據(jù)流訂閱、消費流程。

Subject<T>

我們再來認識下Subject<T>,Subject是一個IObservable,它以命令形式生成一個值,并將該值推送給觀察者對象。我們看下Subject<T>的結(jié)構(gòu)。

Rx.Net的核心知識點有哪些

看這繼承關(guān)系,我們繼續(xù)看SubjectBase<T>里面有些啥~

Rx.Net的核心知識點有哪些

哎呀,這個類真不得了啊,把IObserver<T>和IObservable<T>都給繼承了。這不是可以自己提供數(shù)據(jù)自己進行訂閱和消費了么....
我們來看看Subject<T>是怎么玩的:

Rx.Net的核心知識點有哪些

執(zhí)行結(jié)果如下圖:

Rx.Net的核心知識點有哪些

需要注意的是訂閱方法需要在數(shù)據(jù)生成前聲明。

關(guān)于Rx.Net的核心知識點有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)頁題目:Rx.Net的核心知識點有哪些
轉(zhuǎn)載源于:http://muchs.cn/article0/jiogoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、關(guān)鍵詞優(yōu)化、手機網(wǎng)站建設(shè)、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名