涉及async、awit的浏览器事件循环
代码执行过程:
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的浏览器事件循环相关推荐
- 浏览器事件循环机制与Vue nextTick的实现
浏览器事件循环机制 先上一段简单的代码 console.log('aa'); setTimeout(() => { console.log('bb')}, 0); Promise.resolve ...
- 5调用外部浏览器打开代码_浏览器事件循环
浏览器运行过程中会同时面对多种任务,用户交互事件(鼠标.键盘).网络请求.页面渲染等.而这些任务不能是无序的,必须有个先来后到,浏览器内部需要一套预定的逻辑来有序处理这些任务,因此浏览器事件循环诞生了 ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- 【转载】浏览器事件循环机制(event loop)
首先,本文转自https://juejin.im/post/5afbc62151882542af04112d 当我看完菲利普·罗伯茨的 javascript event loop的演讲的时候,就对于事 ...
- 详解浏览器和Node的事件循环机制及区别
关于事件循环机制(详解) 前言 一.浏览器的事件循环机制 二.Node的事件循环机制 三.两者的区别 前言 JS是单线程的脚本语言,即在同一时间只能做一件事.为了协调时间.用户交互.脚本.UI渲染和网 ...
- 浏览器和node事件循环
什么是事件循环 每一个浏览器都至少有一个事件循环,一个事件循环至少有一个任务队列.循环指的是其永远处于一个"无限循环"中.不断将注册的回调函数推入到执行栈 浏览器的事件循环标准是由 ...
- 八七、Node.js事件循环与多进程
nodejs事件循环与多进程 why 事件循环对于深入理解nodejs异步至关重要 fs, net,http,events 事件循环是企业面试中的最高频考题之一 能驾驭nodejs多进程是一名资深前端 ...
- 如何跟面试官解释事件循环
关于事件循环的问题面试官都尤其的偏爱,所以说准备面试如果不搞懂事件循环是非常危险的. 当面试官问你了解浏览器事件循环吗?这只是一个开始,接下来: 为什么js在浏览器中有事件循环机制 事件循环有哪些任务 ...
- JavaScript单线程异步的背后——事件循环机制
感觉这篇文章拖了很久,好尴尬的拖延症 正文从这里开始--- 对JavaScript有个很模糊的印象,它是单线程异步的.本文主要来说说JavaScript到底是怎么运行的.但在这之前,让我们先理一下这些 ...
最新文章
- c语言编程用得上i7,为什么我的C应用程序比Core i7上的C应用程序(使用相同的库)更快...
- wpf 放大缩小界面_调整电脑屏幕文本文字显示大小,系统设置放大缩小DPI图文教程...
- 【DB2】NVL2函数
- (下)python3 selenium3 从框架实现代码学习selenium让你事半功倍
- P6222-「P6156 简单题」加强版【莫比乌斯反演】
- 阅文集团副总裁傅徐军:最佳技术架构选型方法论
- html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏
- Python机器学习及实践+从零开始通往Kaggle竞赛之路
- bfv同态加密_五分钟了解同态加密及三种常见方案
- frameset ,iframe的使用
- python importlib qpython_Python imports指南:Python的导入有更好的理解
- javamelody 使用
- Could not find a declaration file for module 'vue-xxx'.
- 数据模型与决策_好的数据模型最终都为业务而生
- 【电力负荷预测】基于matlab遗传算法优化BP神经网络电力负荷预测【含Matlab源码 1524期】
- pmp备考资料这些都是必备的
- 安卓熄屏录像_最屌免费安卓Android屏幕录像软件 (免ROOT)
- 二叉树的前中后序遍历的非递归形式【Java】
- 全国计算机二级c语言上机考试软件,考前刷题专用
- 复旦大学《数学分析》教学大纲,读后有感