Concat Connectable Observables
我有一个列表
connectableObservable
,我想在上一个项目完成后从列表中运行一个项目。我已经尝试在列表上应用concat()
方法,但显然此方法对ConnectableObservables不起作用。我该怎么做?
这就是我尝试的:
ConnectableObservable<Long> observable1 =
Observable.timer(1500, TimeUnit.MILLISECONDS).publish();
ConnectableObservable<Long> observable2 =
Observable.timer(1550, TimeUnit.MILLISECONDS).publish();
List<ConnectableObservable<Long>> list = new ArrayList<>();
list.add(observable1);
list.add(observable2);
Observable.concat(list).doOnNext(aLong -> {
Log.i("result", aLong.toString());
}).subscribe();
observable1.connect();
observable2.connect();
在这里,observable2
在observable1
完成后运行50毫秒,而不是预期的1550。
I have a List
of ConnectableObservable
, and I want to run one item from the list when the previous item is done. I've tried applying concat()
method on the list, but apparently this method doesn't work on ConnectableObservables. How can I do this?
This is what I've tried:
ConnectableObservable<Long> observable1 =
Observable.timer(1500, TimeUnit.MILLISECONDS).publish();
ConnectableObservable<Long> observable2 =
Observable.timer(1550, TimeUnit.MILLISECONDS).publish();
List<ConnectableObservable<Long>> list = new ArrayList<>();
list.add(observable1);
list.add(observable2);
Observable.concat(list).doOnNext(aLong -> {
Log.i("result", aLong.toString());
}).subscribe();
observable1.connect();
observable2.connect();
Here, observable2
runs 50 milliseconds after observable1
completes, not 1550 as expected.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您没有在
ConnectableObservable
上调用connect()
方法,因此它没有开始发布任何内容。放在
代码末尾。
另外,您可以将
.autoconnect(1)
添加到observable1
和observable2
。它不能同时工作,如以下Junit确认:
You didn't invoke
connect()
method onConnectableObservable
, so it hadn't started to publish anything.Put
at the end of your code.
Alternatively you can add
.autoConnect(1)
to yourobservable1
andobservable2
.It doesn't work simultaneously as following junit confirms it: