publisher.collect(<#T##strategy: Publishers.TimeGroupingStrategy<Scheduler>##Publishers.TimeGroupingStrategy<Scheduler>#>)
Run Code Online (Sandbox Code Playgroud)
在 Xcode 11.3 中,补全效果不太好,但格式并不太复杂。TimeGroupingStrategy枚举中发布了两个选项(从 iOS 13.3 开始):
byTimebyTimeOrCount当您指定任一策略时,您还需要指定它运行的调度程序,这是这些枚举情况的参数之一。
例如,要使用 DispatchQueue 按时间收集(收集间隔为 1.0 秒),您可以使用:
let q = DispatchQueue(label: self.debugDescription)
let cancellable = publisher
.collect(.byTime(q, 1.0))
Run Code Online (Sandbox Code Playgroud)
该byTime版本将在上游发布者提供的缓冲值中指定的时间间隔内使用无限量的内存。
它byTimeOrCount采用一个附加count参数,该参数在将缓冲集合发送给订阅者之前设置收集的项目数量的上限。
例如,最大缓冲区大小为 10 项的相同代码:
let q = DispatchQueue(label: self.debugDescription)
let cancellable = publisher
.collect(.byTimeOrCount(q, 1.0, 10))
Run Code Online (Sandbox Code Playgroud)
您可以在使用组合项目中查看正在使用的代码的更具体示例以及验证它们如何运行的单元测试:
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |