/* Page prose (ja) */
"ClassicModelTaxes" = "# クラシックモデルと、それが課す税金\n\nクラシックモデルのすべては、一つの形を共有していました。何らかの作業を開始し、*後で*実行するための**クロージャ**（completion handler）を渡して、先に進む、というものです。そのクロージャこそが、クラシックモデルがひそかにあなたに請求してくる継ぎ目です。五つの請求が何度も何度も現れます。\n\n* **completion handler があらゆる場所に。**  \nすべての非同期ステップは、*あなたの*クロージャを呼び出すことで終わります。通常の行のように非同期呼び出しの後に何かが実行されることはありません。すべてはハンドラーの*内側*で生きなければなりません。\n* **破滅のピラミッド。**  \nステップ B がステップ A の結果を必要とするとき、B の呼び出しは A のハンドラーの内側に入ります。ステップ C を加えると、また入れ子になります。コードは右へと進んでいきます。\n* **`throws` を使えないエラー。**  \ncompletion handler は `return` するための関数ではないので、`throw` できません。エラーは値として運ばれ、呼び出し元それぞれへ手作業でルーティングしなければなりません。\n* **コールバックを呼び忘れる。**  \n*ある*経路（早期の `return`、エラー分岐）では、完了処理の呼び出しを忘れやすいものです。すると呼び出し元は永遠に待ち続け、間違いを指し示すクラッシュもありません。\n* **メインスレッドへの移動を忘れる。**  \n結果はバックグラウンドキューに届きます。そこから UI を触れば、*ときどき*しか現れないバグを抱えることになります。手作業でメインスレッドへ戻ることを、忘れずに覚えておかなければなりません。\n\n手作業の管理作業の最後のものには、[Operation の依存関係とキャンセル](Operation%20Dependencies%20and%20Cancellation.playgroundchapter/Overview) の章で出会いました。Operation どうしの依存関係を組み立て、キャンセルフラグを一つひとつに通し、適切なタイミングでそれを確認する、というものです。強力ですが、すべてがあなたの肩にかかっています。これらの税金が一つの小さなジョブでどう積み重なるのかを見てみましょう。\n\n[前へ](@previous)  |  2 / 6 ページ  |  [次へ: 三つのステップからなるジョブ](@next)";
