Scala ZIO ZSchedule的初始延迟
我试图制定的时间表必须:Scala ZIO ZSchedule的初始延迟,scala,schedule,zio,Scala,Schedule,Zio,我试图制定的时间表必须: 在指定的延迟后启动 以固定的速度重复 如果达到给定的时间限制或遇到终止状态,则终止 所以我得到的是(2)和(3): val repeatUntimelimitreached= ZSchedule .fixed(config.pollingConfig.pollInterval) .untilOutput(达到轮询时间限制) val untilTermination=Schedule.doUntil[重新启动状态](u.terminatesPolling) val计划=r
val repeatUntimelimitreached=
ZSchedule
.fixed(config.pollingConfig.pollInterval)
.untilOutput(达到轮询时间限制)
val untilTermination=Schedule.doUntil[重新启动状态](u.terminatesPolling)
val计划=repeatUntilTimeLimitReached*>untilTermination
我尝试了ZSchedule.delayed()
,但它似乎也会增加后续计划的延迟
那么,有没有办法将初始延迟添加到ZSchedule
?为什么不添加另一个计划并编写它们:
val delayedSchedule = Schedule.once.delayed(_ + 12.seconds)
val schedule = delayedSchedule *> repeatUntilTimeLimitReached *> untilTermination
我玩了一点这个,你需要flatMap
时间表
这里我使用一个使用zio.console
的示例:
import zio.console._
import zio.duration._
import zio.{App, Schedule, ZIO}
val s = Schedule.spaced(1.second)
for {
_ <- putStrLn("Start")
_ <- putStrLn("Initial Delay").delay(5.seconds)
_ <- putStrLn("Repeated Delay").repeat(s)
} yield ()
导入zio.console_
导入zio.duration_
导入zio.{App,Schedule,zio}
val s=计划。间隔(1.秒)
为了{
_在与社区进行了一次小型讨论后,似乎无法通过计划实现预期行为(ZIO版本:1.0.0-RC15),因为它用于在第一次执行后重复
我最终使用了我在原始帖子中制作的ZIO.sleep()
和schedule
:
val schedule=repeatUntilTimeLimitReached*>untilTermination
为了{
_这样它:运行一次>等待12秒>运行一次>退出
我希望它一开始根本不运行。@EnergyCreator你是对的-我在我的问题中添加了一个更新你的答案的更新版本有效,但最初的问题是是否可以创建一个带有初始延迟的ZSchedule
。无论哪种方式ZIO.sleep()。