JSイベントサイクル(Event Loop)マクロタスクタスク微タスク

1825 ワード

1コード
まず、直接コードを付けます.
                setTimeout(() => {
                    console.log(1);
                }, 100)
                
                setTimeout(() => {
                    console.log(2);
                })

                
                new Promise((resolve) => {
                    console.log(3)
                    resolve();
                }).then(() => {
                    console.log(4);
                })

                new Promise((resolve) => {
                    console.log(5);
                })

                async function asyn1() {
                    console.log(6);
                }

                asyn1().then(() => {
                    console.log(7);
                })

                console.log(8);
運行結果を直接言ってください.
 3 5 6 8 4 7 2 1 
2どうしてですか?
    私の理解から見れば、これはJSにおけるイベントサイクル機構(Event Loop)が決定したためであり、JSにおけるイベントサイクルは、タスク・キューをマクロタスク(Task)とマイクロタスク(Microtask)に分けている.タスクキューのスケジューリングメカニズムは私たちが考えているのとは違って、結果ページが違っています.
2.1マクロタスク/マイクロタスクに属するタスクは何ですか?
マクロタスクのキューには、タスクが含まれています.
    script(メインプログラムコード)、setTimeout、set Interval、setImmedite、I/O、UI rendeng
タスクのキューにはジョブが含まれています.    process.nextTick,Promises,Object.observe,MuttionObserver
2.2発表の流れ
                //     : 3 5 6 8 4 7 2 1 
                // log(1)         ,  0.1s  
                // log(2)         ,   
                // log(3)     ,then  log(4)      
                // log(5) new Promise()    ;
                // log(6)     (        Promise),  
                // log(7) then       
                // log(8)     
                //   ,        ,       ,        
                //      ,log(4),log(7)
                //        :log(2),log(1)
3まとめ
    JSの事件処理を分析するのは初めてです.何か間違いがあったら、ご容赦ください.