0Pricing
Swift Academy · 课时

Task 与任务取消

创建结构化任务,检查取消状态并实现协作式取消。

Task 与任务取消 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

欢迎

`Task` 是 Swift 中并发的基本单位。它可以运行异步工作,并支持结构化取消,从而实现干净的资源管理。

创建任务

```swift Task { let user = try await fetchUser(id: 1) print(user.name) } ``` `Task` 会创建新的并发执行上下文。

任务优先级

```swift Task(priority: .userInitiated) { await loadContent() } Task(priority: .background) { await prefetch() } Task(priority: .utility) { await syncData() } ```

Task.cancel()

```swift var task: Task? func startLoading() { task = Task { await heavyWork() } } func stopLoading() { task?.cancel() } ```

检查取消状态

```swift func process() async throws { for item in items { try Task.checkCancellation() // throws if cancelled process(item) } } ```

Task.isCancelled

```swift func stream() async { while !Task.isCancelled { let data = await fetch() emit(data) } } ```

分离任务

```swift Task.detached(priority: .background) { // NOT inheriting actor context or priority of the caller await heavyBackgroundWork() } ```

withTaskCancellationHandler

```swift await withTaskCancellationHandler { await doWork() } onCancel: { cleanup() } ```

任务返回值

```swift let task = Task { 6 * 7 } let result = await task.value // 42 ```

休眠

```swift try await Task.sleep(for: .seconds(2)) // Swift 5.7+ try await Task.sleep(nanoseconds: 1_000_000_000) // 1 second ```

快速检查

如果任务已被取消,哪个方法会抛出 `CancellationError`?

回顾

要点: • `Task { }` — 创建异步工作单元 • `task.cancel()` + `Task.checkCancellation()` — 协作式取消 • `Task.isCancelled` — 轮询式检查 • `Task.detached` — 不继承参与者或优先级 • `Task.sleep(for:)` — 非阻塞延迟 下一课:async let。

常见问题解答

「Task 与任务取消」课时是免费的吗?

是的 — 「Task 与任务取消」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「Task 与任务取消」这节课中我会学到什么?

创建结构化任务,检查取消状态并实现协作式取消。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Task 与任务取消」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. async/await 语法与调用异步函数
  2. Task 与任务取消
  3. async let 与并发子任务
  4. Actor:保护共享可变状态
← 返回 Swift Academy