JS事件循环优先级

本文探讨了JavaScript中单线程与异步处理的关系,引入了事件循环的概念。通过一个例子展示了事件循环中的执行优先级,即主干代码 > 微任务 > 宏任务。并列举了宏任务(如setTimeout)和微任务(如Promise)的常见类型,强调理解这些优先级对于避免编程错误的重要性。
摘要由CSDN通过智能技术生成

由于JS是单线程的,但是JS又又异步处理概念,那么是怎么处理这个异步的东西的呢,这个时候就有了事件循环的概念

在JS里事件循环是很重要的概念,代码的执行栈都是以事件循环为标准的具体的事件循环概念这里就不详细解释描述,主要讲述事件循环中的执行优先级问题,这里涉及到到概念还有宏任务、微任务

很多面试都遇到这段代码输出的顺序是什么这样的问题,下面就是这么一个简单的问题

function test() {
    return new Promise((resolve, reject) => {
        console.log('in promise');
        resolve();
    })
}

console.log('start');

setTimeout(() => {
    console.log('in setTimeout');
},0);

test().then(() => {
    console.log('in then');
});

console.log('end');

//start
//in promise
//end
//in then
//in setTimeout

以上输出可以自行验证,下面说说为什么会这么输出

  1. start最先输出没有疑问
  2. 执行到setTimeout是异步任务且是宏任务,插入宏任务执行队列继续执行
  3. 执行test遇到promise,立即执行promise内代码,输出in promise
  4. 执行到then(),是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值