我需要一个具有以下属性的可观察队列:
onNext
/ onError
个来电那就是我有这样的想法:
Observable<?> observable1 = createObservable1()
.flatMap(v -> executeHttpCall().subscribeOn(HttpScheduler.getInstance()))
.flatMap(data -> saveToDatabase(data).subscribeOn(Schedulers.io())
.delay(3000, TimeUnit.MILLISECONDS);
// external subscription
observable1
.subscribe(v -> println("observable1 finished"));
Observable<?> observable2 = createObservable2()
observable2.subscribe(v -> println("observable2 finished"));
ObservableQueue.add(observable1); // <- execution starts immediately (queue is empty)
// 1 second later from other part of the code:
ObservableQueue.add(observable2); // <- execution waits for observable1 to complete and then launches
// expected output:
// observable1 finished
// observable2 finished
我已经在StackOverflow上看到了使用Executors.newSingleThreadExecutor()
的建议,但在这种情况下这并没有帮助,因为它没有处理在几个不同调度程序上工作的良好可观察链。这确实让我感到担忧,因为例如observable1
可能会向DB写入内容,而observable2
会在数据需要存在的位置添加 - 所以我想确保执行的序列顺序整个链。
我写了一个simple implementation这个与协调发生使用主题(顺便说一下,非常欢迎反馈),但我想问是否有人知道一个现有的解决方案,我可以使用而不是发明我自己的。