Swift异步序列构造器AsyncStream内部定时器(Timer)无法被触发的解决

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift异步序列构造器AsyncStream内部定时器(Timer)无法被触发的解决相关的知识,希望对你有一定的参考价值。



问题现象

自从Swift 5.5开始,Apple引入了融入Swift语言层面的新型并发模型,我们可以用async/await等新语法来编写异步代码。

除了新的并发机制,Swift 5.5还引入了新异步序列Async Sequences,你可以认为异步序列是其内部元素异步产生的序列,我们遍历时需要“等待”它们每一个元素。

为了更简洁的自定义我们自己的异步序列模型,Swift引入了一个AsyncStream结构。使用它,只需寥寥几行代码就可以定制出灵活小巧的异步队列对象,非常方便。

但是,如果我们尝试把计时器直接放在AsyncStream中,想产生一个简单的倒计时功能的结果可能会大失所望!它无法完成,因为其中的计时器不会被触发。

我们怎么来解决这个问题呢?

Let’s find out!

以上是关于Swift异步序列构造器AsyncStream内部定时器(Timer)无法被触发的解决的主要内容,如果未能解决你的问题,请参考以下文章

C#8.0——异步流(AsyncStream)

Swift 5.5 并发:如何序列化异步任务以用 maxConcurrentOperationCount = 1 替换 OperationQueue?

在 Swift 中,如何从异步任务外壳内部更新主线程上的文本视图

C# 8.0 抢先看 -- Async Stream

JsonSerializer 在反序列化期间不使用内部构造函数

图解 AsyncSequence 异步序列