Ayx*_*xan 10 ios async-await swift
考虑下面的代码:
class UserProfile
{
private var img: UIImage? {
didSet { /* update ui */ }
}
private var bio: String? {
didSet { /* update ui */ }
}
private func loadImage() async -> UIImage? {
// ...
}
private func loadBio() async -> String? {
// ...
}
public func loadData() async {
async let img = loadImage()
async let bio = loadBio()
self.img = await img
self.bio = await bio
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这确实并行运行加载例程,但分配结果是同步的:self.bio将始终在 后分配self.img。这意味着简介的 UI 必须等待图像加载。我希望这些能够相互解耦。完成处理程序在这里是理想的选择,但我们使用的是异步 API。我如何才能使任务按完成顺序进行?
wor*_*dog 19
你可以尝试这样的事情:
func loadData() async {
await withTaskGroup(of: Void.self) { group in
group.addTask { self.img = await loadImage() }
group.addTask { self.bio = await loadBio() }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4184 次 |
| 最近记录: |