我一直在探索从Async算法rithms开始的AsyncTimerSequence,发现它是一个简单的解决方案,可以不断地从我的等待函数向侦听器发出元素.

我的问题是,该序列只在给定的间隔之后发出一个值.通过浏览这source code个,我知道这是故意的.但是,我希望在某个函数开始侦听序列后立即发出一个值,然后在指定的间隔之后发出一个值.

我想我必须创建我自己的AsyncSequence(通过修改AsyncTimerSequence),但我只想知道是否有不需要编写新的序列创建器的解决方案.

推荐答案

可以利用定时器序列来chain只由now(通过async)组成的异步序列:

let clock = ContinuousClock()
let timerSequence = AsyncTimerSequence(interval: .seconds(1), clock: clock)
let sequence = chain([clock.now].async, timerSequence)

for await tick in sequence {
    …
}

Swift相关问答推荐

VisionOS发送通知

如何在AudioKit中实现自定义音效 node ?

如何才能在同一线程上调用类中的每个方法,而不对每个调用使用同步块?

background Task(.backgroundTask)不适用于MySQL

从任务中打印

try 从闭包访问返回的字符串时出现无法将类型 '()' 的返回表达式转换为返回类型 'String'编译器错误

Swift计时器未触发

Pod lib lint 命令找不到 watchos 模拟器

在 Vapor 4 中使用协议的通用流利查询

对齐时如何避免图像尺寸缩小

`IndexSet` 永远不会是空的?

如何获取 NSRunningApplication 的参数?

在 Swift 中,如何查看 Process() 传递给 shell 的字符串?

如何有条件地格式化 SwiftUI 代码

如何使被拖动的对象成为前景(foreground)对象

理解 Swift 2.2 Select 器语法 - #selector()

将项目引用添加到 Swift iOS XCode 项目并调试

FirebaseStorage:如何删除目录

Swift - 迭代 struct 对象时如何对其进行变异

快速延迟加载属性