JS:通过setTimeout和promise来了解js代码执行机制(面试题讲解)

目录

1.setTimeout定时器

2.promise函数

补充:1.什么是宏任务与微任务

补充:2.宏任务和微任务的执行顺序

补充:3.js的执行顺序

补充:4.答案揭晓


前几天碰到一个关于js执行顺序的面试题,一时间竟然有点模糊,今天就带大家来回顾一下这道面试题。

 就如上图所示,大家可以先思考一下,答案我就先不透露了,等我讲解完后,再公布,等不及的小伙伴可以翻到下面查看答案。

1.setTimeout定时器

setTimeout是异步执行函数,会放到任务队列中,等主线程结束之后再运行,不管你的timeout取值于多少,属于宏任务。

2.promise函数

而promise函数是在主线程之中自然执行下去,但它的.then方法却属于异步函数,它也是要等到主线程结束之后再运行,但它属于微任务,优先级要高于宏任务。

补充:1.什么是宏任务与微任务

JavaScript又把异步函数分为两种:宏任务与微任务

(1)宏任务

  • 异步ajax请求
  • setTimeout、setInterval
  • 文件操作

(2)微任务

  • Promise.then、.catch 和 .finally
  • process.nextTick

补充:2.宏任务和微任务的执行顺序

 大家可以从上面的流程图可以看出,

  • 每一个宏任务执行完之后,都会检查是否存在待执行的微任务
  • 如果有,则执行完所有微任务之后,再继续执行下一个宏任务

补充:3.js的执行顺序

主线程 => 微任务 =>宏任务

补充:4.答案揭晓

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值