欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

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

何為Reactive Extensions(Rx)

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

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

Rx的使用場(chǎng)景

響應(yīng)式UI

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

Rx 核心

Rx有兩個(gè)核心接口 IObservable<T>、IObserver<T>

IObservable<T>

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

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

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

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

IEnumerable

可方便的列舉集合元素值

IObservable

可觀察對(duì)象變動(dòng)的值

IObserver<T>

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

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

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

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

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

代碼示例

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

Rx.Net的核心知識(shí)點(diǎn)有哪些

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

Subject<T>

我們?cè)賮?lái)認(rèn)識(shí)下Subject<T>,Subject是一個(gè)IObservable,它以命令形式生成一個(gè)值,并將該值推送給觀察者對(duì)象。我們看下Subject<T>的結(jié)構(gòu)。

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

Rx.Net的核心知識(shí)點(diǎn)有哪些

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

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

網(wǎng)頁(yè)題目:Rx.Net的核心知識(shí)點(diǎn)有哪些
轉(zhuǎn)載源于:http://chinadenli.net/article0/jiogoo.html

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

廣告

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

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