js中Promise的微任務隊列和宏任務的區別以及單一狀態


1.Promise有個微任務隊列(then),輪詢到執行的時候,就會從隊列中調出任務,放入主線程中去執行
2.任務中的微隊列可以有多個
3.等級排序:主線程>微任務>宏任務(其最后執行setTimeout)
4.主線程中的任務執行完成后,再去掃描微任務隊列中有沒有任務(由resolve,reject把任務放進微任務隊列中去),有則執行,沒有再去執行宏任務
    格式:
            new promise(主任務).then(result,err).then(result,err).then(...)  //其實每一個Promise.then也是一個Promise...
見代碼:
 1  setTimeout(() => {
 2         console.log('我是宏任務');
 3     }, 0); //先來個宏任務
 4 
 5     new Promise((resolve, reject) => {
 6             reject('第一次執行失敗');
 7             console.log('主線程1');
 8         })
 9         .then(result => {
10             console.log(result);
11         }, err => {
12             console.log(err);
13         })
14         .then( //對上一次then執行結果的處理
15             result => {
16                 console.log('后續處理成功啦')
17             },
18             err => {
19                 console.log('后續處理還是失敗');
20             }
21         )
22     console.log('主線程2');

 //執行結果:

主線程1
主線程2
第一次執行失敗
后續處理成功啦
我是宏任務

 

再之需要注意的便是Promise的主任務中的狀態是單一不可變的,即如果有多個狀態時,位置最靠前的起決定作用,后續的reject,resolve將不會再起作用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM