2017-08-11 99 views
0

我有一個Observable,它以JSON字符串的形式發出事件。我想訂閱它阻止並獲得第一個字符串。不是問題。RxJava2 Blocking Observable Timeout:如何在超時觸發時發出結果?

但我想也有一個超時,並在超時時觸發一個罐頭的JSON字符串。

這裏是我現有的代碼:

String jsonString = rxEvents.subscribe().toBlocking().first(); 
+0

它不起作用? – klutt

+0

上面的代碼有效。它以字符串的形式發出第一個事件的內容。問題是如何在超時觸發時添加發出罐裝(常量)JSON文本字符串的超時。 – EBarnett

+0

我會換個話。你試圖完成什麼你想要什麼,它是如何工作的? – klutt

回答

0

只需使用的timeout是需要3個參數的版本:

rxEvents 
    .timeout(1, TimeUnit.SECONDS, Observable.just("fallback")) 
    .toBlocking() 
    .first() 

注意,在你的示例代碼不需要subscribe

+0

這個迴應是針對我尋求的解決方案,但它不能編譯。投訴是類型不匹配(Observable vs Observable <?extends String>)。 – EBarnett

+0

您可以粘貼rxEvents的類型並返回方法的類型 – hgrey

+0

rxEvents是Observable的類型其中包含進入響應對象返回給用戶的JSON。在發生超時的情況下,我將模擬一個可用的JSON字符串,該字符串給了我需要指示超時的用戶消息。 Observable EBarnett

相關問題