JavaScript 執行機制

參考:這一次,徹底弄懂 JavaScript 執行機制

javascript是一門單線程語言
Event Loop是javascript的執行機制

 console.log('script0');
    setTimeout(function(){
        console.log('setTimeout0')
    }, 10);
    setTimeout(function() {
        console.log('setTimeout1')
        Promise.resolve().then(function() {
            console.log('promise0');
        });
    }, 0);
    new Promise(function(resolve) {   //new promise.then()
        console.log('promise1')
        for( var i=0 ; i<10000 ; i++ ) {
            i==9999 && resolve();
        }
    }).then(function() {
        console.log('promise2');
    });
    console.log('script1');

執行結果依次爲

script0 
promise1
script1 
promise2   
setTimeout1 
promise0   
setTimeout0

同步任務指的是,在主線程上排隊執行的任務,只有前一個任務執行完畢,才能執行後一個任務;
異步任務指的是,不進入主線程、而進入"任務隊列"(task queue)的任務,只有"任務隊列"通知主線程,某個異步任務可以執行了,該任務纔會進入主線程執行。

同步任務:console.log()
微任務和宏任務都是異步任務

微任務:promise,process.nextTick()
宏任務:setTimeout、script、ajax、異步IO、setInterval()

 new Promise(function(resolve,reject) {  
        /* 同步任務 */
    }).then(function() {
        /* 微任務 */
    });

先執行同步任務、再執行微任務、然後宏任務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章