私たちはこのオープンソースプロジェクトを世界中の人々に提供したいと考えています。このチュートリアルの内容をあなたが知っている言語に翻訳するのを手伝ってください。動作を理解することは最適化ためには重要であり、適切なアーキテクチャにとっても重要である場合があります。このチャプターでは、最初にそれがどのように動作するかについて理論的な詳細を説明し、次にその知識の実践的な使用例を見ていきます。コンセプトは非常にシンプルです。エンジンはタスクを待機し、それらを実行し、また次のタスクを待機します。エンジンの一般的なアルゴリズムは次の通りです:タスクがある間:最も古いタスクから開始し、それらを実行します。これは、ページを閲覧するときに見られることの形式化です。エンジンはスクリプト/ハンドラ/イベントがアクティブになった場合にのみ実行され、ほとんどの時間何もしません。それを実行することです。イベントをディスパッチし、ハンドラを実行することです。そのコールバックを実行することです。消費はほぼゼロです)。タスクはエンジンがビジーなときに来ることもあり、その時はキューに入れられます。実行予定が来たりすると、これらのタスクは上の図に示すようにキューを形成します。ハンドラを実行していきます。ここまではとても簡単ですね。あと2つ詳細です:エンジンがタスクを実行している間、レンダリングは発生しません。タスクが時間がかかるかどうかは関係ありません。変更はタスクが完了した後にのみ描画されます。いった警告を表示し、ページ全体のタスクを強制終了するかどうかを訪ねます。これは複雑な計算が多数ある場合や、無限ループに陥るようなプログラムミスにより引き起こされます。ここまでは理論でした。次からこの知識をどうのように適用できるか見ていきましょう。大量にCPUを食うタスクがあるとしましょう。シンタックスハイライト(このページのコード例を色付けするために使用しています)は、かなりCPU負荷がかかります。コードをハイライトするために分析を行い、多くの色付けされた要素を生成し、ドキュメントに追加します。テキスト量が多い場合には多くの時間が必要です。エンジンがシンタックスハイライトをするのに忙しい間は、他のDOM関連の処理やユーザイベントの処理などを行うことはできません。する可能性もありますが、これは受け入れられません。この問題に関しては、大きなタスクを細かく分割することで回避が可能です。(遅延ゼロで)で次の100行を処理するようスケジュールしていきます。カウントする関数を取り上げます。