【发布时间】:2016-11-20 01:19:15
【问题描述】:
我必须重复安排相同的observableN 次数,每个M 之间有M 秒延迟:
O1____1sec____O2____1sec____O3____1sec____O4(完成)
注意开始和结束 observable 之间没有延迟,
Observable<Precious> result = <~> // hidden for brevity (it's just a long time consuming observable that can take suppose up to 10 seconds or more)
Observable.timer(M,TimeUnit.SECONDS).compose(x -> result).take(N).subscribe();
问题这里是result observable 正在执行昂贵的网络调用,它会在计时器到期后自行超时,还是我们必须告诉它这样做,如果是的话怎么办?
【问题讨论】:
-
我不清楚你的问题,但你是否担心你的第一个 observable 的发射速度快于你的第二个 observable 的消耗速度?
-
另外,
compose(x -> result)会扔掉x;就好像你写了x.take(N).subscribe()。你需要重新订阅 observable 吗?超时?你看过retry吗?如果这似乎不相关,您能否用更多上下文扩展您的问题? -
抱歉回复晚了,@RickSanchez 我很担心你提到的同样的原因,@Tassos,我不想要它的价值,我只想要它的及时调用行为,你可以说打电话给
while(N != 0){dosomething(); N--; Thread.sleep(M);} -
@TassosBassoukos 重试将导致我猜每次调用都调用 onComplete ?
-
@Mr.Z - 不,只有一个 onComplete 将被传递到下游。
标签: android multithreading rx-java rx-android