js--単一スレッド、マルチスレッド、タスク実行キュー、同期、非同期
1.単一スレッド、マルチスレッド
質問1:JavaScriptに複数のスレッドがないのはなぜですか?これで効率アップ!
2.タスク実行キューの順序が-同期-非同期
同期とは?
答え:メインスレッド上でキューに並んで実行するタスクは、前のタスクが完了してから、次のタスクを実行できます.
非同期とは?
答:メインスレッドに入らず、タスクキューに入るタスクは、タスクキューがメインスレッドに通知するだけで、ある非同期タスクが実行でき、そのタスクがメインスレッドに入る
定番例—面接でも質問できるよ----結果を当てて
答え:例1:1、4、2、3例2:1、0-9999、4、2、3
settimeoutは、settimeout(function){console.log(2);}からの非同期リクエストに相当します.0)0秒実行ではあるがjsメッセージキューの実行順序が先に同期されることが分かる
列2:同じように、前に1万回のサイクルがあっても、1億回も同期後非同期を実行しています.
まとめ:同期は順序が一致することを保証することができるが、ブロックを招きやすい.非同期はブロックの問題を解決しますが、順序性が変わります.
JavaScript ,
, ,
, 。
, 。
質問1:JavaScriptに複数のスレッドがないのはなぜですか?これで効率アップ!
:heml5 web Worker javascript
,
DOM, javascript
2.タスク実行キューの順序が-同期-非同期
同期とは?
答え:メインスレッド上でキューに並んで実行するタスクは、前のタスクが完了してから、次のタスクを実行できます.
非同期とは?
答:メインスレッドに入らず、タスクキューに入るタスクは、タスクキューがメインスレッドに通知するだけで、ある非同期タスクが実行でき、そのタスクがメインスレッドに入る
定番例—面接でも質問できるよ----結果を当てて
1:
console.log(1);
setTimeout(function () {
console.log(2); }, 0); //0
setTimeout(function () {
console.log(3); }, 1000);
console.log(4);
2:
console.log(1);
for (var i = 0; i < 10000; i++) {
// 1
console.log(i)
}
setTimeout(function () {
console.log(2); }, 0); //0
setTimeout(function () {
console.log(3); }, 1000);
console.log(4);
答え:例1:1、4、2、3例2:1、0-9999、4、2、3
settimeoutは、settimeout(function){console.log(2);}からの非同期リクエストに相当します.0)0秒実行ではあるがjsメッセージキューの実行順序が先に同期されることが分かる
列2:同じように、前に1万回のサイクルがあっても、1億回も同期後非同期を実行しています.
まとめ:同期は順序が一致することを保証することができるが、ブロックを招きやすい.非同期はブロックの問題を解決しますが、順序性が変わります.