【发布时间】:2017-01-01 14:20:34
【问题描述】:
我有一个对象集合,称它们为obj。他们有一个act() 方法。 act() 方法最终将导致 o 上的 event() observable 调用 onComplete。
什么是链接这些的好方法?
即调用o.act(),等待o.event().onComplete,然后调用下一个o2.act(),以此类推,无限数量的o在集合中。
所以签名是这样的:
public class Item {
final protected PublishSubject<Object> event = PublishSubject.create();
public Observable<ReturnType> event() {
return event;
}
public void act() {
// do a bunch of stuff
event.onComplete();
}
}
然后在消费代码中:
Collection<Item> items...
foreach item in items
item.act -> await item.event().onComplete() -> call next item.act() -> so on
【问题讨论】:
-
是否需要在o2.act()中返回o.act()?如果没有,你能异步运行所有这些吗?
-
@Sebas o2, o3 等每个都可能取决于先前执行的副作用(但不是实际的返回值)
-
那么,顺序很重要,对吗?
-
@Sebas - 订单很重要,是的
-
然后检查一下,它可能会帮助stackoverflow.com/a/26936234/1291428 - 似乎
switchmap会阻止您的可观察对象在之前的结果完成之前发出它们的结果