请介绍 Swift 5.5 中 async/await 这一新特性,并说明其基本用法。
考察说明
考查对 Swift 5.5 并发模型中 async/await 语法及使用方式的理解。
回答思路
- 【回答框架 1】async/await 是 Swift 5.5 引入的异步编程模型,用于简化异步代码的编写,避免回调地狱。async 标记异步函数,await 用于等待异步操作结果。它基于协程实现,由运行时调度,不阻塞线程。
- 【回答框架 2】使用 async 定义异步函数,如 func fetchData() async -> Data。调用异步函数时使用 await,如 let data = try await fetchData()。异步函数可以抛出错误,需处理 try。
- 【回答框架 3】异步函数只能在异步上下文中调用,不能在同步函数中直接调用,除非使用 Task 或 Task.detached 创建异步任务。Task 用于封装异步工作,可获取结果或手动取消。
- 【回答框架 4】async/await 与 GCD 相比,代码更线性易读,自动处理线程切换,避免嵌套闭包。但需注意任务调度和取消机制,以及性能影响。
- 【关键点 1】async/await 基于协程,提供结构化并发,避免回调嵌套。
- 【关键点 2】async 函数定义异步操作,await 挂起当前任务等待结果。
- 【关键点 3】Task 用于创建异步上下文,支持取消和优先级。
- 【易错点 1】不能将异步函数与同步逻辑混用,需明确异步上下文。
- 【易错点 2】过度使用 async/await 可能导致线程阻塞或性能下降,需合理设计。
- 【易错点 3】忽略错误处理可能导致未捕获异常,需使用 try 和 throws。