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

我试图制定的时间表必须:

  • 在指定的延迟后启动
  • 以固定的速度重复
  • 如果达到给定的时间限制或遇到终止状态,则终止
  • 所以我得到的是(2)和(3):

    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()。