JavaScript异步原理

作用:
提高应用程序的响应性和性能
js是单线程语言,意味着同一时间只能执行一个任务
但是为了支持异步操作,采取了"事件循环"机制

事件循环工作原理:

1.调用栈(callback)

这是js执行代码的主要区域,当你调用一个函数时,他会被压入调用栈。当函数执行完毕,他会从调用栈中弹出

2.任务队列(taskqueue)

这是存放异步任务的地方,当异步操作完成时,例如定时器settimeout或者ajax请求,他会将回调函数放入任务队列

3.事件循环(eventloop)

这是链接调用栈和任务队列的机制,他会不断地检查调用栈是否为空,如果为空,就会从任务队列中取出一个回调函数,并将其压入调用栈执行

4.异步操作的执行流程:

(1)异步操作时,JavaScript 引擎会将其添加到任务队列中,然后继续执行同步代码
(2)当同步代码执行完成后,事件循环会检查任务队列,并根据优先级执行相应的任务
(3)微任务优先于宏任务执行,为了确保 Promise 等微任务能够尽快完成

5.微任务和宏任务
(1)微任务
  • Promise.then()
  • Promise.catch()
  • Promise.finally()
  • process.nextTick (Node.js 环境)
  • MutationObserver
(2)宏任务

-setTimeout
-setInterval
-setImmediate (Node.js 环境)
-I/O
-UI rendering

微任务优先级大于宏任务

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值