promise--任务队列和事件循环

异步任务的队列优先级: 异步宏任务先执行 然后在执行异步微任务

            脚本运行 执行第一个宏任务:

            1. 先执行同步任务 

            2.添加新的宏任务到队列中 添加新的的异步微任务

            3.执行异步微任务

!!!注意是先执行的宏任务,再执行的微任务!!!

then是微任务,settimeout是宏任务(目前接触的)

为什么说是一个循环呢?

因为在开启一个宏任务的同时,往往也开启了多个宏任务,以及微任务,先执行同步任务,然后宏任务排队,执行微任务,这个宏任务做完之后,就轮到下一个宏任务,然后依次执行同步任务,添加宏任务,执行微任务,有再返回到下一个宏任务,这样就形成了一个循环,一直到最后一行代码。

(全局)同步——宏——微——(下一个)宏——同——微——(下下个)宏————.......直到不在开启新的宏任务,也就是最后一个宏任务

练习题:

			setTimeout(() => {
				console.log(0);
			});
			new Promise(resolve => {
				console.log(1);
				setTimeout(() => {
					resolve();
					var p1=new Promise((n1,n2)=>{n1(20)})
					p1.then(() => console.log(2));
					console.log(3);
					setTimeout(()=>{console.log(9)},0)
				});
				new Promise((n1,n2)=>{n1(20)}).then(() => console.log(4));
			}).then(() => {
				console.log(5);
				var p2=new Promise((n1,n2)=>{n1(20)})
				p2.then(() => console.log(8));
				setTimeout(() => console.log(6));
			});
			console.log(7);
//1,7,4,0,3,5,2,8,9,6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值