结构化并发与异步函数
定义 async 函数,使用 await 调用它们,并理解 结构化并发 :子任务会在父作用域退出前完成。
结构化并发与异步函数 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 3 节课。
为什么使用异步/等待?
异步/等待让您能够编写读起来像同步代码的异步代码。借助结构化并发,子任务与作用域生命周期绑定,不会泄漏。
您的第一个异步函数
异步函数可以等待其他异步工作。在脚本或演练场中创建一个Task来调用它。
// Simulate a short async delay, then return a value
func fetchNumber() async -> Int {
try? await Task.sleep(nanoseconds: 200_000_000) // ~200ms
return 42
}
// Call sites must use "await" from an async context or a Task
Task {
let n = await fetchNumber()
print("Fetched:", n) // 42
}挂起,然后恢复
等待会将任务挂起,直到结果就绪,然后执行会在下一行干净地恢复。
func greet(after seconds: Double) async -> String {
let ns = UInt64(seconds * 1_000_000_000)
try? await Task.sleep(nanoseconds: ns)
return "Hello after \(Int(seconds))s"
}
Task {
print(await greet(after: 1.0))
print("Back on the same task after await.")
}异步绑定基础
使用异步绑定启动子任务。它们属于当前作用域,并且必须在作用域退出前完成等待。
// Run child tasks concurrently within the same scope
func fetchUser() async -> String { "Ana" }
func fetchScore() async -> Int { 90 }
Task {
async let name = fetchUser()
async let score = fetchScore()
// Both start immediately; await joins them before use
let summary = await "\(name): \(score)"
print(summary) // "Ana: 90"
// Scope ends -> child tasks are awaited automatically (structured)
}父任务与子任务汇合
结构化意味着父任务不能在子任务之前完成。这样可以避免出现孤立工作,并使生命周期更可预测。
// Parent Task encapsulates children lifetimes
func loadProfile() async -> String {
async let name = fetchUser()
async let score = fetchScore()
return await "\(name) (\(score))"
}
Task {
let profile = await loadProfile()
print(profile) // e.g., "Ana (90)"
// loadProfile does not return until its children are done
}指南
提示:
- 从任务的角度思考,而不是线程。
- 使用异步绑定处理同级任务;在作用域退出前使用等待。
- 演示时使用
Task.sleep休眠;实际应用应等待网络或文件输入输出。
等待的定义
快速检查:await会做什么?
回顾
回顾:将函数标记为异步,使用等待调用它们。使用异步绑定启动同级任务,并依靠结构化并发确保子任务先于父任务结束。
常见问题解答
「结构化并发与异步函数」课时是免费的吗?
是的 — 「结构化并发与异步函数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 3 节课。
「结构化并发与异步函数」这节课中我会学到什么?
定义 async 函数,使用 await 调用它们,并理解 结构化并发 :子任务会在父作用域退出前完成。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。
「结构化并发与异步函数」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 结构化并发与异步函数
- async let、Task 与取消
- try await 与错误传播