マクロタスクタスクタスクタスクキューイベントサイクルEventLoop
5305 ワード
そうであることを知りつつ,またその理由を知っていなければならない.
JavaScript言語の大きな特徴は単一スレッドであり、つまり同じ時間に一つのタスクしか処理できないということです.イベント、ユーザーインタラクション、スクリプト、UIレンダリング、ネットワーク処理などの行為を調整するために、メインスレッドのブロッキングを防止し、Event Loopのソリューションアプリケーションによって発生します.JavaScriptは任務を待つ、任務を実行する、休眠して新しい任務を待つ中で絶えず循環する中で、このような機構はイベント循環とも言われます.
js実行順序
メインスレッドでのタスクの実行が完了したら、タスクのキューの中のタスクが新しいタスクが来たら、それをキューに入れて、先に実行する戦略をとって、複数のsetTimeoutが同時に時間になったら、順次実行します.
ジョブが含まれています
script(全体コード)、setTimeout、set Interval、DOMレンダリング、DOMイベント、Promise、XMLHTTPREQUEstなど
マクロタスク
JavaScript言語の大きな特徴は単一スレッドであり、つまり同じ時間に一つのタスクしか処理できないということです.イベント、ユーザーインタラクション、スクリプト、UIレンダリング、ネットワーク処理などの行為を調整するために、メインスレッドのブロッキングを防止し、Event Loopのソリューションアプリケーションによって発生します.JavaScriptは任務を待つ、任務を実行する、休眠して新しい任務を待つ中で絶えず循環する中で、このような機構はイベント循環とも言われます.
js実行順序
メインスレッドでのタスクの実行が完了したら、タスクのキューの中のタスクが新しいタスクが来たら、それをキューに入れて、先に実行する戦略をとって、複数のsetTimeoutが同時に時間になったら、順次実行します.
ジョブが含まれています
script(全体コード)、setTimeout、set Interval、DOMレンダリング、DOMイベント、Promise、XMLHTTPREQUEstなど
マクロタスク
, 。
わずかな任務 ,
Promise.then ,
Promise ,
then
タスクの実行順序 、 、 1、2、3、4
コードケース setTimeout(() => {
console.log(" ");
setTimeout(() => {
console.log("timeout timeout");
}, 0);
new Promise(resolve => {
console.log("settimeout Promise");
resolve();
}).then(() => {
console.log("settimeout then");
});
}, 0);
new Promise(resolve => {
console.log("Promise");
resolve();
}).then(() => {
console.log("then");
});
console.log(" ");