js--単一スレッド、マルチスレッド、タスク実行キュー、同期、非同期


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億回も同期後非同期を実行しています.
まとめ:同期は順序が一致することを保証することができるが、ブロックを招きやすい.非同期はブロックの問題を解決しますが、順序性が変わります.