我使用observeOn觀察可觀察到在另一個線程:RxJava異步觀察者錯過元素
Observable.just("Hello", "world!").observeOn(Schedulers.io()).subscribe(System.out::println);
但是這個代碼將不會總是輸出!「世界,你好」。與PublishSubject相同:
PublishSubject<String> subject = PublishSubject.create();
subject.observeOn(Schedulers.io()).subscribe(System.out::println);
subject.onNext("Hello");
subject.onNext("world!");
爲什麼此代碼不總是打印「Hello world!」 ?我認爲至少在第二個示例中,訂閱會收到兩條消息,因爲它在onNext調用之前訂閱。有沒有辦法接收這兩個消息?
你真的想在這裏使用Schedulers.io()嗎?根據文檔,它只能用於IO操作,如文件讀取或網絡。 – Stepango
從潛在問題的角度來看,使用io()是無關緊要的。它的目的是阻止操作,通常是IO,但沒有阻止你對它們進行計算。 – akarnokd