2016-11-16 15 views
3

15秒間隔で、または被験者refreshEventsSubjectonNextを発射したときはいつでも、しかし成功することはありません。RxJava(Kotlin)、Observable.ambとPublishSubjectは発砲していません

対象はそう

private val refreshEventsSubject = PublishSubject<Long>()

のように開始され、そして、我々は、我々は間隔からイベントごとに15秒を取得し、この

Observable.merge(Observable.interval(0, 15, TimeUnit.SECONDS), refreshEventsSubject) .subscribe { ... }

のようにそれを観察してみたが、対象実行後に発砲していない

refreshEventsSubject.onNext(0)

感謝しています。

(すべてはKotlinで書かれている)

+0

RxJavaでは、パラメータのないコンストラクタでの作成が機能しないため、 'PublishSubject.create()'静的メソッドを介して 'PublishSubject'を作成します。 RxKotlinがこれを補うかどうかはわかりません。 – akarnokd

+0

はい、PublishSubjectのバインディングKotlinのRXは、この '楽しい PublishSubject()のようになります。PublishSubject = PublishSubject.create()'確か –

答えて

1

は、それがデッドロックを引き起こす可能性としてrefreshEventsSubject.onNext(0)があなたのメインスレッドから呼び出されていないことを確認してください!

マージではなくhttp://reactivex.io/documentation/operators/amb.htmlも使用してください。マージでは、被験者のonNextを呼び出す2つのイベントが発生します。

0

AMBのドキュメントを読む:http://reactivex.io/documentation/operators/amb.html

具体的emit all of the items from only the first of these Observables to emit an item or notification

あなたが探しているオペレータは、おそらくObservable.mergeです:http://reactivex.io/documentation/operators/merge.html

+0

が、それはしかし、まだ動作しません。サブジェクトに直接登録するとイベントが発生しますが、インターバルストリームと結合/マージすると何も起こりません。 –

関連する問題