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