setTimeout、Promise、Async/Await 的区别

本文介绍了JavaScript的事件循环机制,包括Microtasks和Macrotasks的区别,以及setTimeout、Promise和Async/Await在异步执行中的不同。在事件循环中,Microtasks优先级高于Macrotasks,每次循环先执行Microtasks队列,再执行Macrotask。setTimeout的回调属于Macrotask,而Promise.then和async/await产生的回调属于Microtask。
摘要由CSDN通过智能技术生成

一、event loop
JS主线程不断的循环往复的从任务队列中读取任务,执行任务,这中运行机制称为事件循环(event loop)。
二、Microtasks、Macrotasks
Microtasks(微任务)和Macrotasks(宏任务)是异步任务的一种类型,Microtasks的优先级要高于Macrotasks,下面是它们所包含的api:

microtasks
	process.nextTick
	promise
	Object.observe (废弃)
MutationObserver
	macrotasks
	setTimeout
	setImmerdiate
	setInterval
	I/O
	UI 渲染

注意:
每一个 event loop 都有一个 microtask queue
每个 event loop 会有一个或多个macrotaks queue ( 也可以称为task queue )
一个任务 task 可以放入 macrotask queue 也可以放入 microtask queue中
每一次event loop,会首先执行 microtask queue, 执行完成后,会提取 macrotask queue 的一个任务加入 microtask queue, 接着继续执行microtask queue,依次执行下去直至所有任务执行结束。

先了解JavaScript的执行机制(同步和异步)

1 同步和异步任务分别进入不同的执行”场所”,同步的进入主线程,异步的进入Event Table并注册函数。
2 当指定的事情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值