2017-01-11 5 views
1
val observable = Observable(...) 
    .publish 
val subscription = observable.connect 

observable.doOnsubscribe(() => doSomething) 
    .subscribe() 

doSomething никогда не вызывается. Тот же самый код для RxJava работал правильно. Кажется, по какой причине он никогда не распространяется на основной Java ObservableRxScala ConnectableObservable.doOnSubscribe никогда не называется?

Update: Так что мой обходной путь является

observable.asJavaObservable 
    .doOnSubscribe(new Action0 { 
     override def call(): Unit = { 
      doSomething 
     } 
    }}.asScala 
    .subscribe() 
+0

какие версии rx-scala, scala? – eis

+0

RxScala 0.26.5 и Scala 2.11 – Wins

ответ

0

publish создает связное Observable. Это немного отличается от стандартного Observable, и вам нужно позвонить connect(), чтобы подключенный Observable начал излучать. См. Документацию here.

+0

Я действительно звонил по телефону, здесь я просто опустил, чтобы сосредоточиться на том, что имеет значение. Важно то, что тот же самый код в RxJava или в моем обходном пути работает, но не в чистом RxScala. Позвольте мне просто установить соединение, если это станет проще. – Wins

+1

Кажется, что проблема с вашей подписью. См. [Этот вопрос] (http://stackoverflow.com/questions/36274683/why-doesnt-this-execute-the-function-given-for-rxscalas-doonsubscribe-function). – JohnWowUs

+0

Спасибо, я проверю и обновляю здесь. – Wins

 Смежные вопросы

  • Нет связанных вопросов^_^