SwiftUI 中异步编程:async/await 与 Combine 的融合
1. 异步编程基础
在 Swift 中,通过在方法签名中添加 async 关键字,我们可以声明该方法为异步方法。编译器会利用这个信息确保该方法在异步上下文中被调用,如果忘记使用 await 关键字调用该方法,编译器会在编译时抛出错误。
使用 await 调用异步方法会创建一个所谓的暂停点。当函数暂停时,运行时可以重用它正在执行的线程来执行应用程序中的其他代码。可以将其想象成与客服中心的代理通话,被告知“请稍等”:当你听着或多或少有趣的等待音乐时,你可以继续做其他事情,比如喝茶、畅想下一次假期或与房间里的其他人聊天。一旦客服中心的代理查找完重要信息,你就会全神贯注地继续之前暂停的对话。
2. 调用异步代码
要调用异步代码,我们需要处于异步上下文中。有几种方法可以建立异步上下文,创建新的 Task 就是其中之一:
Task {
let result = search(for: "Swift")
}
不过,在面向 UI 的代码中反复编写这样的代码会很繁琐。幸运的是,Apple 对 SwiftUI 进行了更新,使得在 UI 上下文中调用异步代码尽可能简单。特别是,他们添加了一些 API 来调用异步代码:
- 当视图出现时(使用 .task 视图修饰符)
- 当用户在 List </
超级会员免费看
订阅专栏 解锁全文
3065

被折叠的 条评论
为什么被折叠?



