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)无法被触发的解决的主要内容,如果未能解决你的问题,请参考以下文章
Swift 5.5 并发:如何序列化异步任务以用 maxConcurrentOperationCount = 1 替换 OperationQueue?
在 Swift 中,如何从异步任务外壳内部更新主线程上的文本视图