代码执行过程:

 1.从上到下执行,同步代码立即执行2.遇到宏任务丢到宏任务队列遇到微任务丢到微任务队列遇到async函数先执行await之前的代码再执行await那一行的同步代码,接着跳出函数往下执行外部同步代码3.执行完外部同步代码,回到async函数。如果await后面执行完毕,则执行该函数内剩余的同步代码4.扫描微任务队列5.扫描宏任务队列【注意点:async函数会返回一个promise】

下面做两道题:

 //第一题:console.log(1);async function fn(){console.log(2)await console.log(3)console.log(4) }setTimeout(()=>{console.log(5)},0)fn();new Promise((resolve)=>{console.log(6)resolve();}).then(()=>{console.log(7)})console.log(8)
//结果:1 2 3 6 8 4 7 5
 //第二题:
async function async1() {console.log('async1 start');await async2();console.log('async1 end');
}
async function async2() {console.log('async2');
}console.log('script start');setTimeout(function() {console.log('setTimeout');
}, 0)async1();new Promise(function(resolve) {console.log('promise1');resolve();
}).then(function() {console.log('promise2');
});
console.log('script end');/*
script start
async1 start
async2
promise1
script end
async1 end
promise2
setTimeout
*/

涉及async、awit的浏览器事件循环相关推荐

  1. 浏览器事件循环机制与Vue nextTick的实现

    浏览器事件循环机制 先上一段简单的代码 console.log('aa'); setTimeout(() => { console.log('bb')}, 0); Promise.resolve ...

  2. 5调用外部浏览器打开代码_浏览器事件循环

    浏览器运行过程中会同时面对多种任务,用户交互事件(鼠标.键盘).网络请求.页面渲染等.而这些任务不能是无序的,必须有个先来后到,浏览器内部需要一套预定的逻辑来有序处理这些任务,因此浏览器事件循环诞生了 ...

  3. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  4. 【转载】浏览器事件循环机制(event loop)

    首先,本文转自https://juejin.im/post/5afbc62151882542af04112d 当我看完菲利普·罗伯茨的 javascript event loop的演讲的时候,就对于事 ...

  5. 详解浏览器和Node的事件循环机制及区别

    关于事件循环机制(详解) 前言 一.浏览器的事件循环机制 二.Node的事件循环机制 三.两者的区别 前言 JS是单线程的脚本语言,即在同一时间只能做一件事.为了协调时间.用户交互.脚本.UI渲染和网 ...

  6. 浏览器和node事件循环

    什么是事件循环 每一个浏览器都至少有一个事件循环,一个事件循环至少有一个任务队列.循环指的是其永远处于一个"无限循环"中.不断将注册的回调函数推入到执行栈 浏览器的事件循环标准是由 ...

  7. 八七、Node.js事件循环与多进程

    nodejs事件循环与多进程 why 事件循环对于深入理解nodejs异步至关重要 fs, net,http,events 事件循环是企业面试中的最高频考题之一 能驾驭nodejs多进程是一名资深前端 ...

  8. 如何跟面试官解释事件循环

    关于事件循环的问题面试官都尤其的偏爱,所以说准备面试如果不搞懂事件循环是非常危险的. 当面试官问你了解浏览器事件循环吗?这只是一个开始,接下来: 为什么js在浏览器中有事件循环机制 事件循环有哪些任务 ...

  9. JavaScript单线程异步的背后——事件循环机制

    感觉这篇文章拖了很久,好尴尬的拖延症 正文从这里开始--- 对JavaScript有个很模糊的印象,它是单线程异步的.本文主要来说说JavaScript到底是怎么运行的.但在这之前,让我们先理一下这些 ...

最新文章

  1. c语言编程用得上i7,为什么我的C应用程序比Core i7上的C应用程序(使用相同的库)更快...
  2. wpf 放大缩小界面_调整电脑屏幕文本文字显示大小,系统设置放大缩小DPI图文教程...
  3. 【DB2】NVL2函数
  4. (下)python3 selenium3 从框架实现代码学习selenium让你事半功倍
  5. P6222-「P6156 简单题」加强版【莫比乌斯反演】
  6. 阅文集团副总裁傅徐军:最佳技术架构选型方法论
  7. html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏
  8. Python机器学习及实践+从零开始通往Kaggle竞赛之路
  9. bfv同态加密_五分钟了解同态加密及三种常见方案
  10. frameset ,iframe的使用
  11. python importlib qpython_Python imports指南:Python的导入有更好的理解
  12. javamelody 使用
  13. Could not find a declaration file for module 'vue-xxx'.
  14. 数据模型与决策_好的数据模型最终都为业务而生
  15. 【电力负荷预测】基于matlab遗传算法优化BP神经网络电力负荷预测【含Matlab源码 1524期】
  16. pmp备考资料这些都是必备的
  17. 安卓熄屏录像_最屌免费安卓Android屏幕录像软件 (免ROOT)
  18. 二叉树的前中后序遍历的非递归形式【Java】
  19. 全国计算机二级c语言上机考试软件,考前刷题专用
  20. 复旦大学《数学分析》教学大纲,读后有感

热门文章

  1. 【因特网】网络杂谈(3)之你真的了解因特网吗?
  2. Painter X Artists(艺术家)画
  3. Java程序员求职面试应该注意什么?
  4. 业绩大跌、市值减半、食安隐患,盐津铺子还能“起跳“吗?
  5. Android音频管理总结(个人笔记)
  6. 电大计算机理工英语23935,化工原理课程设计-空气压缩机后冷却器
  7. CentOS 安装Nux dextop库
  8. 借《腾讯传》加深对腾讯的理解
  9. 国内共享软件的十大杀手
  10. charles在线破解工具