• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
smileyqp
https://github.com/smileyqp
博客园    首页    新随笔    联系   管理    订阅  订阅

前端进阶之js执行顺序

setTimeout(()=>{
    console.log('set1')
})

new Promise((resolve,reject)=>{
    console.log('p1')
    resolve();
}).then(()=>{
    console.log('then1')
})
console.log('1')



最后的执行结果顺序是:p1,set1,then1,set1
整个的一个执行顺序涉及到两点:

  • js的执行顺序
  • 微任务与宏任务

对于js的执行顺序而言,按照代码的顺序去找,

  • 没有异步就 顺序执行
  • 有异步放入异步队列之中
  • new Promise的第一部分是按照同步执行的
    以上三点可知:先打印p1之后是1;在之后由于set1和then1是放入异步队列之中的,那么当顺序执行完成之后再去执行这些。但是,任务又分为微热恩恩无和宏任务:
  • 每次支持性完成后要先检查当前是否微任务队列中还有微任务还没有执行完成,如果有的话就先执行完微任务再去执行下一个宏任务
posted @ 2020-04-11 16:42  smileyqp  阅读(1094)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3