/* Page prose (zh-Hans) */
"GettingAValueBack" = "# 取回一个值\n\n一个任务可以*返回*一个值，你通过对它的 `value` 属性使用 `await` 来读取它。因为工作可能仍在运行，读取这个值本身就是一次 `await`。";
"GettingAValueBack-2" = "**观察运行：**`Order placed...` 先打印，然后是一段停顿，接着是 `Served: a double espresso`。外层任务在 `await order.value` 处挂起，直到内层任务产出它的结果，然后从它离开的地方原样继续。\n\n如果任务可能抛出，`value` 也会抛出，所以你要写 `try await task.value`。当你更想在不用 `do-try-catch` 的情况下检视结果时，就求助于 `task.result`，它交给你一个可以 `switch` 的 `Result`：\n\n```swift\nenum BarError: Error { case outOfBeans }\n\nTask {\n    let order = Task { () -> String in\n        try await Task.sleep(for: .milliseconds(200))\n        throw BarError.outOfBeans\n    }\n\n    switch await order.result {\n    case .success(let cup): print(\"Served: \\(cup)\")\n    case .failure(let error): print(\"Couldn't serve: \\(error)\")\n    }\n}\n```\n\n`await order.result` 从不抛出；错误在 `Result` *内部*。你会看到 `Couldn't serve: outOfBeans`。\n\n[上一页](@previous)  |  第 3 / 11 页  |  [下一页: 结构化 vs 非结构化](@next)";
