2017-01-13 81 views
0

根據它的Javadoc上Mono<T>.materialize()Should Mono <T> .materialize return Flux <Signal<T>>?

變換傳入onNext,onError的和的onComplete信號轉換成信號。由於錯誤被物化爲一個信號,傳播將被停止並且onComplete將被髮射。完整信號將首先發出Signal.complete(),然後有效地完成通量。

這意味着,通過materialize返回的Publisher至少應該發出2信號時沒有錯誤發生:

  • Signal.next
  • Signal.complete

然而,該方法的返回類型是Mono<Signal<T>>,它只允許發射單個事件。所以我很困惑。的代碼應該是

Flux<Signal<Integer>> mono = Mono.just(1).materialize(); 
StepVerifier.create(mono) 
    .expectNext(Signal.next(1)) 
    .expectNext(Signal.complete()) 
    .verifyComplete(); 
+0

我想在第一行有一個';'缺少以及太多下面的介紹吧? – Thomas

+0

謝謝,我補充說。 – Wins

回答

0

Monomaterialize僅發射一個Signal。只有3種情況可以發生在一個單聲道:

  1. 單成功並且價值Signal.next(value)發出
  2. 單是成功的,但Signal.complete()發出
  3. 錯誤Signal.error(throwable)發出
+0

如果是這種情況,Javadoc應該改進,因爲它誤導我假設回報應該是'Flux' – Wins

相關問題