gpt4 book ai didi

rx-java - 接收超时操作符

转载 作者:行者123 更新时间:2023-12-01 13:29:44 24 4
gpt4 key购买 nike

如果没有发出任何项目,我想在 x 秒后发出一项。我试图使用超时运算符。问题是 timeout 操作符需要之前至少执行一项才能开始倒计时。从文档:

“如果下一个项目没有在从其前任开始的指定超时时间内发出,则生成的 Observable 将开始镜像回退 Observable。”

这不是我正在寻找的行为。当我订阅我的 observable 时,如果在特定的时间段过去后之前没有任何发射的项目,我想发射一个特定的项目。

例子:

 getUserLocationFromGPS() //Sometimes I dont receive user location
.timeout(5, TimeUnit.SECONDS, Observable.just(getDefaultLocation())
.subscribe(...);

最佳答案

final Observable data = yourApi.getData().take(5, TimeUnit.SECONDS);
final Observable fallback = Observable.just("Fallback");

Observable.concat(data, fallback).firstOrError()
.subscribe(
System.out::println
);
  • yourApi.getData()不发出任何东西,那么你将从你的后备 observable 接收数据。
  • yourApi.getData() timeouts 那么你将从你的后备观察中接收数据。
  • yourApi.getData()正常发出,然后您将从它接收数据。
  • 关于rx-java - 接收超时操作符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46540626/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com