溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

web響應(yīng)式流的生命周期是什么

發(fā)布時(shí)間:2021-12-27 15:58:32 來(lái)源:億速云 閱讀:162 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要講解了“web響應(yīng)式流的生命周期是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“web響應(yīng)式流的生命周期是什么”吧!

總的來(lái)說(shuō)就是三個(gè)階段。組裝時(shí)、訂閱時(shí)、運(yùn)行時(shí)。其中組裝時(shí)是代碼的靜態(tài)表達(dá),訂閱時(shí)、運(yùn)行時(shí)描述的是響應(yīng)式流程序運(yùn)行起來(lái)時(shí)所設(shè)計(jì)的邏輯。

組裝時(shí)

這個(gè)階段就是我們建立處理模型的階段?;旧鲜墙鉀Q了下面三個(gè)方面的問(wèn)題。

1)定義這個(gè) reactive stream 的數(shù)據(jù)來(lái)源是什么。Publisher

這個(gè)階段我們通過(guò)使用諸如 just(), range(), fromArray(), push(), create(), generate()等方法來(lái)設(shè)置數(shù)據(jù)源頭。

2)這個(gè)數(shù)據(jù)流的最終訂閱者是誰(shuí)?Subscriber

我們?cè)谧钕掠?publisher 上通過(guò)調(diào)用 subscribe()方法把 subscriber 從下游到上游依次傳遞到最上游的包含數(shù)據(jù)源的 publisher。

3)數(shù)據(jù)到達(dá)最終訂閱者那里時(shí)需要做哪些轉(zhuǎn)換、處理?Operator

以上兩個(gè)調(diào)用解決了數(shù)據(jù)來(lái)源于哪里、被誰(shuí)最終接收的問(wèn)題。但是在數(shù)據(jù)從上游被傳遞到下游的過(guò)程中,我們往往需要對(duì)數(shù)據(jù)做各種處理。這個(gè)階段就各種 operator 大顯身手的地方,比如 map(), flatMap(), filter(), reduce(), scan(), concatMap(), usingWhen()… …
實(shí)際上每經(jīng)歷一個(gè) operator,就生成了一個(gè)新的中間級(jí)別的 publisher,這就是 reactive stream 的不可變性。

組裝時(shí)基本就是我們寫出的代碼定義出的靜態(tài)邏輯這部分。
程序運(yùn)行起來(lái),才會(huì)進(jìn)入下面的兩個(gè)階段:訂閱時(shí)、運(yùn)行時(shí),所以說(shuō)這兩個(gè)階段是程序的動(dòng)態(tài)表現(xiàn)。

訂閱時(shí)

通過(guò)組裝時(shí)我們定義了什么數(shù)據(jù)(publisher)經(jīng)過(guò)怎樣的處理(operator)最后傳遞給誰(shuí)(subscriber)。而訂閱時(shí)這個(gè)階段,解決的問(wèn)題是如何把調(diào)用下游 publisher 時(shí)傳入的 subscriber 依次傳遞給上游的的 publisher。可以想象 Project Reactor 在傳遞 subscriber 的時(shí)候是依次進(jìn)行封裝之后傳遞的而不會(huì)是直接把下游的 subscriber 傳遞上去,因?yàn)橐?operator 串聯(lián)起來(lái)的各個(gè) publisher 都需要“自己”的 subscriber??梢泽w會(huì)下這里“Subscriber 鏈”的概念。
這個(gè)傳遞過(guò)程很重要,因?yàn)?subscriber 中的 onSubscribe(Subscription s)提供了上游 publisher 把 Subscription 傳遞給下游 Subscriber 的機(jī)制。
因?yàn)?Subscriber 只有通過(guò) subsciption 的 request 方法才能啟動(dòng)數(shù)據(jù)的流動(dòng)。

運(yùn)行時(shí)

經(jīng)過(guò)組裝時(shí)、訂閱時(shí),數(shù)據(jù)流已經(jīng)“一觸即發(fā)”。我們只要通過(guò)上游傳遞給我們的 Subscription 調(diào)用 request()方法就可以觸發(fā)數(shù)據(jù)的流動(dòng)了。
通過(guò)在 Subscirberd 的 onSubscription(), onNext()被回調(diào)時(shí),向 Subscription 的 request()傳入不同的數(shù)字,我們分別可以實(shí)現(xiàn)拉模型、推模型、拉-推模型。
響應(yīng)式流的所謂運(yùn)行時(shí)狹義的講就是這種 Publisher 和 Subscriber 之間的信號(hào)交換,廣義的講也包括operator對(duì)數(shù)據(jù)個(gè)各種轉(zhuǎn)換、處理。

感謝各位的閱讀,以上就是“web響應(yīng)式流的生命周期是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)web響應(yīng)式流的生命周期是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

web
AI