← Каталог
Асинхронность и Concurrency в Swift — Потоки значений — AsyncStream и AsyncThrowingStream
Фрагмент из «Асинхронность и Concurrency в Swift»: Потоки значений — AsyncStream и AsyncThrowingStream.
func temperatureUpdates() -> AsyncStream<Double> {
return AsyncStream { continuation in
let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
let temp = readCurrentTemperature()
continuation.yield(temp)
}
continuation.onTermination = { _ in
timer.invalidate()
}
}
}
// Использование
for await temperature in temperatureUpdates() {
print("Текущая температура: \(temperature)")
} func temperatureUpdates() -> AsyncStream<Double> {
return AsyncStream { continuation in
let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
let temp = readCurrentTemperature()
continuation.yield(temp)
}
continuation.onTermination = { _ in
timer.invalidate()
}
}
}
// Использование
for await temperature in temperatureUpdates() {
print("Текущая температура: \(temperature)")
}