Jsタスクキューに対する理解
2571 ワード
スタックとスタックについて(メモリ領域として)
参考:jsイベントサイクル機構
タスクのキューは主に2種類に分けられます.
マクロタスクは主に、script(全体コード)、set Timeout、set Interval、set Immedite、I/O、UI rendengを含む.
マイクロタスクは主にprocess.nextTick,Promise,Object.observe(廃棄),MuttionObserver(html 5新特性)を含む.
実行の特徴:
分解実行プロセス:
理解しにくいところ:
上記の2つの句は少し回りくどいかもしれません.上の循環機構のリンクを参考にして、関連する図解があります.
言い換えると、マイクロタスクは、現在の呼び出しスタックから発生したマクロタスクより優先的に実行される.
下記のコードの実行過程が理解できれば、タスクキューの実行過程は基本的に理解されるはずです.
setTimeout(() => {
console.log('1')
new Promise((resolve) => {
resolve()
}).then(() => {
console.log('2')
})
}, 0);
setTimeout(() => {
console.log('3')
}, 0);
new Promise((resolve) => {
resolve()
}).then(() => {
console.log('4')
new Promise((resolve) => {
resolve()
}).then(() => {
console.log('5')
})
setTimeout(() => {
console.log('6')
}, 0);
})
new Promise((resolve) => {
resolve()
}).then(() => {
console.log('7')
})
// : 4,7,5,1,2,3,6