Emberjs-app-concrn-run-loop
提供:Dev Guides
EmberJS-実行ループ
これは、アプリケーションの内部コードの大部分が発生する領域です。 これはバッチ処理に使用され、作業を順序付けまたは再順序付けして、効果的かつ効率的かどうかを確認する方法です。 特定のキューに基づいて作業をスケジュールし、優先度順に作業を完了します。
実行ループを非Ember APIと統合すると、非同期コールバックが発生します。 例えば-
- setTimeoutおよびsetIntervalコールバック
- AJAXコールバック
- postMessageおよびmessageChannelイベントハンドラー
- Websocketコールバック
- DOM更新とイベントコールバック
実行ループは、優先的に指定されたキューに基づいてEmberで機能します-
Ember.run.queues
=> ["sync", "actions", "routerTransitions", "render", "afterRender", "destroy"]
- sync -バインディング同期ジョブを含む優先度の高いキューです。
- アクション-スケジュールされたタスクを含む一般的な作業キューです。
- routerTransitions -ルーターの移行ジョブを指定します。
- render -DOMを更新するジョブのレンダリングに使用されます。
- afterRender -スケジュールされたタスクを完了した後にジョブを実行します。
- destroy -破棄するようにスケジュールされているジョブを終了するのは優先度の低いキューです。
キューに基づくジョブの実行
キューに基づいてジョブを実行するには、次の手順に従います-
- ステップ1 *-このステップでは、最も優先度の高いキューの保留中のジョブがCURRENT_QUEUEでチェックされます。 保留中のジョブがない場合、実行ループは完了します。
- ステップ2 *-新しい一時キューを_WORK_QUEUE_として指定します。
- ステップ3 *-ジョブを_CURRENT_QUEUE_から_WORK_QUEUE_に転送します。
- ステップ4 *-_WORK_QUEUE_のジョブを連続して処理します。
- ステップ5 *-ステップ1から繰り返します。
テスト時の実行ループの動作
実行ループなしで作業をスケジュールしようとすると、アプリケーションがテストモードのときにEmberはエラーをスローします。 自動実行が無効になっている理由を理解するには、次の理由を考慮してください-
- コールバックをスケジュールする前に実行ループを開くことに失敗した場合、自動実行はプロダクションで間違いを犯しません。
- 自動実行を無効にすると、アプリケーションが実行ループの外側で実行されるときに発生する誤ったテストの失敗が識別され、アプリケーションのテストに役立ちます。
これらの実行ループの詳細と例については、次のリンクを参照してください:/emberjs/app_concrn_dependency_injection [link]。