ブラウザまたはノードの環境を確認する方法?
ウィンドウ内のノードは未定義である。setImmediateが定義され、ブラウザで定義されていません
タイマー段階:この段階ではのsetTimeoutとのsetIntervalを実行します
ステージをチェック:実行setImmediate
マクロタスク[タスク]マクロタスク:スクリプト(コードページ)、のsetTimeout、のsetInterval、I / Oイベント、UIの対話イベント(イベントをクリックしてください)
マイクロタスク[ジョブ]微任务:プロミス、process.nextTick、プロミス()を()。
マクロタスクは、複数のキューを持つことができます
唯一のマイクロタスクキュー
キューの前列内部タスク、実装の遅延のミリ秒数が少ない、との間のSetTimeout
内部のノードでは、タイマー(のsetTimeout、たsetInterval)はsetImmediateに優先順位を与えます
setTimeout(()=> { にconsole.log( 'のsetTimeout') }、0)1000より大きい//時間は、最初setImmediate実行する (()=> {にconsole.log( 'setImmediate')})setImmediateを
console.log( '開始'); setTimeout(関数(){ にconsole.log( 'タイムアウト'); }、10); 新しいプロミス((解決)=> { にconsole.log( '約束'); 解決() のsetTimeout(()=> { にconsole.log( 'Promsie中的のsetTimeout'); }、0); })。次に、( ()=> { にconsole.log( 'を'); }); console.log( '末端');
操作機構
1.マクロタスクの実行スタックを実行します。
2.マイクロマイクロタスクジョブキューに追加するには、マイクロタスクの実装に遭遇しました。
3.現在のマクロタスクはすぐに、キューの中のマイクロミッションタスクを終了します。
4.現在のタスク実行キューマイクロタスクが完了し、レンダリングを引き継ぐために、レンダリング、GUIのスレッドを確認してください。
5.レンダリング完了し、jsの実行中のマクロタスク(取るためにイベントキュー)と、オープン次回のイベントループたら、引き継ぐために通します。