前端進階之js執行順序

setTimeout(()=>{
    console.log('set1')
})

new Promise((resolve,reject)=>{
    console.log('p1')
    resolve();
}).then(()=>{
    console.log('then1')
})
console.log('1')



最後的執行結果順序是:p1,set1,then1,set1
整個的一個執行順序涉及到兩點:

  • js的執行順序
  • 微任務與宏任務

對於js的執行順序而言,按照代碼的順序去找,

  • 沒有異步就 順序執行
  • 有異步放入異步隊列之中
  • new Promise的第一部分是按照同步執行的
    以上三點可知:先打印p1之後是1;在之後由於set1和then1是放入異步隊列之中的,那麼當順序執行完成之後再去執行這些。但是,任務又分爲微熱恩恩無和宏任務:
  • 每次支持性完成後要先檢查當前是否微任務隊列中還有微任務還沒有執行完成,如果有的話就先執行完微任務再去執行下一個宏任務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章