gpt4 book ai didi

java - 运算符(operator)间隔

转载 作者:行者123 更新时间:2023-12-01 19:56:54 28 4
gpt4 key购买 nike

我有网络调用,我想定期调用它。我只想将运算符 Interval 与 flatMap 一起使用,但在间隔线程上。你能解释一下这种情况吗?我知道Interval只使用一个线程,任务是按顺序处理的。

我有 initDelay = 0,interval = 10。第一个网络调用需要 12 个时间单位,之后立即调用下一个请求。为什么在 12 + 10 时间单位后不调用?我认为关键是在PeriodicTask 类中。看起来网络调用(decoratedRun)被调用,并且新的规划在它们之后被调用。但这是我的假设并不正确。 Decorated.run() 方法在工作线程上运行,并在主线程上进行规划?

最佳答案

如果你想从上一次调用结束到下一次调用开始之间用 10 个时间单位进行网络调用,那么你可以这样做:

Observable.fromCallable( () -> makeNetworkCall() )
.take( 1 )
.repeatWhen( notification -> notification.delay( 10, timeunits, scheduler )
.subscribe( ... );

这将进行网络调用,传递结果值,然后在 10 个时间单位后重新订阅可观察对象。

关于java - 运算符(operator)间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49324624/

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