zl程序教程

您现在的位置是:首页 >  其他

当前栏目

SwiftUI Swift 5.5 新属性之 async 异步调用url

属性async异步 调用 url swift SwiftUI 5.5
2023-09-11 14:18:30 时间

SwiftUI Swift 5.5 新属性之 async 异步调用url

异步是最受欢迎的功能之一,它终于在 swift 中。这大大简化了工作流程。

我们编写的很多代码都必须处理异步行为。从磁盘获取数据、向远程 API 发送请求或下载图像 - 所有这些操作都需要时间,即使是在超快速、低延迟的在家工作网络上也是如此。

处理这个问题的一个简单方法是等待调用完成并且我们请求的数据已经到达。这种方法的问题在于您的应用程序的 UI 在等待时会冻结。我们都使用过对于某些任务似乎完全冻结的应用程序 - 这是一种糟糕的用户体验。

一种方法是在后台线程上执行长时间运行的任务,并在结果到达后回调主应用程序。有多种方法可以实现这一点。作为 iOS 开发人员,我们熟悉委托:您调用一个方法,片刻之后您将收到委托方法之一的结果。这很有效,但生成的代码散布在各处并且很难阅读。

闭包提供了一种更优雅的方式来编写异步代码。

使用闭包和回调来处理异步代码现在很常见,许多 iOS SDK,例如 Alamofire、AWS Amplify、Firebase,甚至 Apple 自己的 SDK 都URLSession在使用它。

但是,一旦您尝试协调多个异步调用,这种代码很快就会变得难以阅读,而且——更糟糕的是——很难正确理解。如果我们能够以类似于第二个代码片段的方式编写异步代码,不是很好吗?

好消息是, Swift 添加了对 async/await 的支持,这将允许我们在不使用回调的情况下进行异步调用。

let url = URL(string: "htts://api.github.com/users/hadley/orgs")!
let (data, _) = try await URLSe