SampledPublisher 基于另一个发布者的事件,对一个发布者的输出进行采样。
这个例子展示了如何每 60 秒采样一次来自“温度发布者”的值。 温度传感器可能会发送许多值,而计时器正好每 60 秒发送一个值。 通过对计时器进行采样,生成的发布者每 60 秒发出最新的温度测量值。
请注意,一个值不会被采样两次。
如果温度传感器在一整分钟内没有发出值,则采样发布者不会发送任何值。
let timer = Timer.publish(every: 60, on: RunLoop.main, in: .default)
temperature
.sample(timer)
.sink { temperature in print("The temperature is \(temperature)" }
编辑 Package.swift 文件。 将 SampledPublisher 添加为依赖项
let package = Package(
name: " ... ",
products: [ ... ],
dependencies: [
.package(url: "https://github.com/berikv/SampledPublisher.git", from: "1.0.0") // here
],
targets: [
.target(
name: " ... ",
dependencies: [
"SampledPublisher" // and here
]),
]
)