Swift async/await
swift
func loadFeed() async throws -> [Post] {
try await withThrowingTaskGroup(of: Post.self) { group in
for id in ids {
group.addTask { try await api.post(id) }
}
return try await group.reduce(into: []) { $0.append($1) }
}
}Task.checkCancellation() 应在长循环中周期性调用。
UI 绑定
.task { await vm.load() } 在 SwiftUI 视图消失时自动取消,优于裸 Task {} 泄漏风险。