/* Page prose (ja) */
"Overview" = "# async/await の基礎\n\nコーヒーバーに戻りましょう。ラテを注文して、引き換えの番号札を渡される場面を想像してください。「準備ができたら名前をお呼びします」というわけです。これが **completion handler** です。章 [なぜモダンな並行処理か](Why%20Modern%20Concurrency.playgroundchapter/Overview) で扱ったコールバックのスタイルですね。これでも動きますが、呼び出しを待つコードは絡まってしまいます。ネストしたクロージャ、脇に取って付けたようなエラー処理、そして注文を上から下へ素直に読む手立てがありません。この章では `async`/`await` を紹介します。これを使うと、待機するコードを普通のレシピのように、一行また一行と読める形で書きつつ、バリスタを *固まらせない* ことができます。\n\n---\n\n## このページで学ぶこと\n\n* `async` 関数を **定義** し、`await` で **呼び出す** 方法。\n* `await` が本当に意味するもの。ブロックではなく **サスペンションポイント** です。\n* なぜタスクはスレッド **ではない** のか、そしてなぜ少数のスレッドで何千ものタスクを実行できるのか。\n* `Task { }` を使って、普通の同期コードから非同期コードへ到達する方法。\n* `async throws` + `try await` が、どのようにエラー処理を素朴な `do-try-catch` へ戻すのか。\n* `async let` を使って独立した作業を **並行して** 実行し、合計時間が縮むのを確かめる方法。\n\n次のページに進んで、最初の `async` 関数を定義しましょう。\n\n1 / 8 ページ  |  [次へ](@next)";
