www涩-www黄网站-www黄色-www黄色com-国产免费拍拍视频在线观看网站-国产免费怕怕免费视频观看

響應式API的設計、實現(xiàn)和應用

2018-03-20 17:01:48 InfoQ  點擊量: 評論 (0)
這篇文章來自于SpringOne的一個演講。在過去的幾年里,Java世界中在大力推動響應式編程的。無論是NodeJS開發(fā)人員使用非阻塞api的成功,還是
IllegalStateException())) .subscribe(System.out::println, t -> { t.printStackTrace(); latch.countDown(); }, latch::countDown); latch.await(); }

在本例中,值和錯誤都傳遞給了訂閱服務器。需要記住的是,當使用CountDownLatch時,只有一個onError()或onComplete()被調用。因此,在錯誤和成功的情況下你都必須要釋放鎖。

可組合方法引用

正如你所想象的,任何嚴重依賴于lambdas的編程模型都容易受到“回調地獄”的影響。但是,具有一定的規(guī)范和方法引用,就不是問題了。所有明智的Ruby開發(fā)人員都會告訴你的是,小的私有方法(甚至只有一行程序!)在可讀性方面非常有價值。如果你很好地為方法命了名并使用方法引用語法,那么你就可以創(chuàng)建出非??勺x的流。

public Flux<ApplicationSummary> list() {
  return Mono
    .zip(this.cloudFoundryClient, this.spaceId)
    .flatMap(function(DefaultApplications::requestSpaceSummary))
    .flatMapMany(DefaultApplications::extractApplications)
    .map(DefaultApplications::toApplicationSummary);
}

在這個例子中,這個流就很易讀。為了獲得一個Flux,我們先從cloudFoundryClient和一個spaceId開始。我們使用這些去請求空間摘要,從這些空間摘要中提取應用程序,然后將這些應用程序映射到應用程序概要。對于任何單獨的操作,我們不知道它具體是怎么做的,但我們并不需要知道這一點。如果需要,IDE很容易就能遍歷這些方法引用,而每個方法的代碼實現(xiàn)也不會混亂。

點自由風格

在本文中,你可能已經注意到我們使用了非常緊湊的風格。 這叫做Pointfree style。它的主要好處是它幫助開發(fā)人員站在編寫函數(shù)(高層關注)的角度來思考,而不是擺弄數(shù)據(低層次的關注)。我們不會說在編寫響應式編程時這是一個硬性要求,但是我們發(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()));
}

如果你看一下這個例子,你會發(fā)現(xiàn)許多地方在分配變量、返回結果,通常這讓它看起來更像傳統(tǒng)的命令式代碼。而這,并不會增加它的可讀性。相反,添加更多的大括號、分號、等號和返回語句,雖然識別了數(shù)據來自哪里,希望能夠更加明確,但可能會混淆流本身實際的重點。

響應式編程是一個巨大的課題,幾乎每個人都在開始接觸它。在編寫響應式代碼時,“錯誤”的選擇非常少,但同時,大量的選擇會讓許多開發(fā)人員感到困惑,不知道什么是最好的入門方法。我們的意見來自于一個大型項目的經驗,我們希望它能對你的響應式之旅有所幫助,我們鼓勵你通過實驗來推動技術發(fā)展,并將你的發(fā)現(xiàn)回饋給社區(qū)。

大云網官方微信售電那點事兒

責任編輯:售電衡衡

免責聲明:本文僅代表作者個人觀點,與本站無關。其原創(chuàng)性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內容。
我要收藏
個贊
?
主站蜘蛛池模板: 波多野结衣在线视频观看 | 日韩免费毛片全部不收费 | 久久国产欧美 | 免费看一级欧美毛片 | 国产初高中生粉嫩无套第一次 | 99久久精品免费看国产一区二区 | 精品国产综合区久久久久久 | 久久久国产一区二区三区丝袜 | 亚洲精品高清国产麻豆专区 | 久操影视| 尹人香蕉久久99天天拍 | 午夜影院a级片 | fc2ppv在线播放| 日日狠狠久久偷偷四色综合免费 | 萌白酱国产一区 | 97免费视频在线观看 | 中文字幕有码在线观看 | 成人免费福利片在线观看 | 欧美性色大片 | 欧美日韩免费播放一区二区 | 国产精品久久久久国产精品三级 | 欧美a级在线观看 | 在线中文字幕日韩 | 久久国内精品 | 97青青草原国产免费观看 | 国产精品一一在线观看 | 国产精品九九免费视频 | 男人的天堂久久香蕉国产 | 91色综合综合热五月激情 | 九九这里只精品视在线99 | 日本久久久 | 私人毛片免费高清影视院丶 | 欧美一级专区免费大片 | 最新国产毛片 | 精品国产爱久久 | 日本一区二区三区四区不卡 | 中美日韩在线网免费毛片视频 | 蜜桃欧美性大片 | 91丨九色丨首页在线观看 | 亚洲国产人成中文幕一级二级 | 成 人 免费 网站 |