響應(yīng)式API的設(shè)計(jì)、實(shí)現(xiàn)和應(yīng)用
在本例中,值和錯(cuò)誤都傳遞給了訂閱服務(wù)器。需要記住的是,當(dāng)使用CountDownLatch時(shí),只有一個(gè)onError()或onComplete()被調(diào)用。因此,在錯(cuò)誤和成功的情況下你都必須要釋放鎖。
可組合方法引用
正如你所想象的,任何嚴(yán)重依賴于lambdas的編程模型都容易受到“回調(diào)地獄”的影響。但是,具有一定的規(guī)范和方法引用,就不是問(wèn)題了。所有明智的Ruby開(kāi)發(fā)人員都會(huì)告訴你的是,小的私有方法(甚至只有一行程序!)在可讀性方面非常有價(jià)值。如果你很好地為方法命了名并使用方法引用語(yǔ)法,那么你就可以創(chuàng)建出非常可讀的流。
public Flux<ApplicationSummary> list() { return Mono .zip(this.cloudFoundryClient, this.spaceId) .flatMap(function(DefaultApplications::requestSpaceSummary)) .flatMapMany(DefaultApplications::extractApplications) .map(DefaultApplications::toApplicationSummary); }
在這個(gè)例子中,這個(gè)流就很易讀。為了獲得一個(gè)Flux
點(diǎn)自由風(fēng)格
在本文中,你可能已經(jīng)注意到我們使用了非常緊湊的風(fēng)格。 這叫做Pointfree style。它的主要好處是它幫助開(kāi)發(fā)人員站在編寫(xiě)函數(shù)(高層關(guān)注)的角度來(lái)思考,而不是擺弄數(shù)據(jù)(低層次的關(guān)注)。我們不會(huì)說(shuō)在編寫(xiě)響應(yīng)式編程時(shí)這是一個(gè)硬性要求,但是我們發(fā)現(xiàn)大多數(shù)人最終都更喜歡它。
Mono<Void> deleteApplication(String name) { return PaginationUtils .requestClientV2Resources(page -> this.client.applicationsV2() .list(ListApplicationsRequest.builder() .name(name) .page(page) .build())) .single() .map(applicationResource -> applicationResource.getMetadata().getId()) .flatMap(applicationId -> this.client.applicationsV2() .delete(DeleteApplicationRequest.builder() .applicationId(applicationId) .build())); }
如果你看一下這個(gè)例子,你會(huì)發(fā)現(xiàn)許多地方在分配變量、返回結(jié)果,通常這讓它看起來(lái)更像傳統(tǒng)的命令式代碼。而這,并不會(huì)增加它的可讀性。相反,添加更多的大括號(hào)、分號(hào)、等號(hào)和返回語(yǔ)句,雖然識(shí)別了數(shù)據(jù)來(lái)自哪里,希望能夠更加明確,但可能會(huì)混淆流本身實(shí)際的重點(diǎn)。
響應(yīng)式編程是一個(gè)巨大的課題,幾乎每個(gè)人都在開(kāi)始接觸它。在編寫(xiě)響應(yīng)式代碼時(shí),“錯(cuò)誤”的選擇非常少,但同時(shí),大量的選擇會(huì)讓許多開(kāi)發(fā)人員感到困惑,不知道什么是最好的入門方法。我們的意見(jiàn)來(lái)自于一個(gè)大型項(xiàng)目的經(jīng)驗(yàn),我們希望它能對(duì)你的響應(yīng)式之旅有所幫助,我們鼓勵(lì)你通過(guò)實(shí)驗(yàn)來(lái)推動(dòng)技術(shù)發(fā)展,并將你的發(fā)現(xiàn)回饋給社區(qū)。
責(zé)任編輯:售電衡衡
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽(yáng)”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設(shè)將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設(shè)下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設(shè)典型實(shí)踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進(jìn)這個(gè)行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動(dòng)化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽(yáng)”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長(zhǎng)期助力儲(chǔ)能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市
-
山西省首座電力與通信共享電力鐵塔試點(diǎn)成功
-
中國(guó)電建公司公共資源交易服務(wù)平臺(tái)摘得電力創(chuàng)新大獎(jiǎng)
-
電力系統(tǒng)對(duì)UPS的技術(shù)要求