说说你对事件循环的理解?

简介: 说说你对事件循环的理解?

简介:

js是一门单线程语言,意味着在同一时间只能做一件事,但并不意味这单线程就是阻塞,而实现单线程非阻塞的方法就是事件循环

两种任务:

在js中任务可以分为两种:同步任务 和 异步任务

同步任务:立即执行任务,同步任务一般直接进入主线程中

异步任务:异步执行的任务,如ajax网络请求等

事件循环:

同步任务进入主线程,即主执行栈,异步任务进入任务队列,主线程内的任务执行完毕为空,会去任务队列读取对应的任务。推入主线程,重复执行上述过程就是事件循环

宏任务和微任务

将任务分为同步任务和异步任务并不准确,因为,异步任务是存放在队列中的,而队列讲究一个先进先出,排在前面的任务,会优先执行,可事实并非如此,原因在与异步任务还可以分为宏任务 和 微任务

微任务

一个需要异步执行的函数,执行时机是在主函数执行结束之后,当前宏任务结束之前
常见的微任务有:
Promise.then 、MutaionObserver、Object.observe(已废弃;Proxy 对象替代)、process.nextTick(Node.js)

宏任务

宏任务的时间粒度比较大,执行的时间间隔是不能精确控制的,对一些高实时性的需求不太符合
常见的宏任务有:
script(可以理解为外层同步代码),setTimeout/setInterval、UI rendering/UI事件、postMessage、MessageChannel。

执行机制

执行一个宏任务,如果遇到微任务就将他放到微任务的事件队列中

当前宏任务执行完成后,会查看微任务的事件队列,然后将里面的微任务依次执行完毕

async和await

async是用来声明一个异步方法,而await是用来等待异步方法执行

async返回一个promise对象

await后面跟一个promise对象,返回该对象的结果,如果不是promise对象,就直接返回结果。


相关文章
|
9月前
|
前端开发 容器
CSS 居中技术完全指南:从基础到高级应用
本文详细介绍了 CSS 中常用的居中方法,涵盖水平居中、垂直居中及同时实现两者的方法。
334 12
|
12月前
|
Linux C++
Linux c/c++之文件类型的判断
这篇文章介绍了在Linux环境下,如何使用C/C++编程通过`stat`系统调用和文件状态位判断一个文件是目录还是普通文件。
171 0
Linux c/c++之文件类型的判断
|
12月前
|
机器学习/深度学习 人工智能 人机交互
智能语音识别:重塑人机交互的新纪元###
【10月更文挑战第18天】 想象一下,轻声细语间,机器便能懂你心意,这是科幻电影的桥段,也是智能语音识别技术为我们描绘的现实蓝图。本文将带您穿越语音识别的奇妙世界,从它的历史长廊漫步至前沿技术的应用场域,一探究竟这项技术如何在教育、医疗、家居等领域大放异彩,同时审视其面临的挑战与未来可能的突破方向。这不仅是一场技术的旅行,更是对未来生活的一次憧憬。 ###
137 1
|
前端开发 JavaScript
React 中的 props 属性传递技巧
【9月更文挑战第6天】本文详细介绍了React中`props`的基本用法,包括传递基本数据类型、对象和数组。文章通过多个代码示例展示了如何正确使用`props`,并探讨了常见的问题及解决方法,如`props`不可变性、默认值设置及类型检查等。正确掌握这些技巧有助于提升编程效率,编写出更健壮的代码。
261 17
|
中间件 FESCAR Apache
你好!Apache Seata(incubating)
你好!Apache Seata(incubating)
1188 102
|
Linux 程序员 C++
【C++ 常见的异步机制】探索现代异步编程:从 ASIO 到协程的底层机制解析
【C++ 常见的异步机制】探索现代异步编程:从 ASIO 到协程的底层机制解析
1708 2
|
消息中间件 数据采集 Python
2024年Python最全使用python的pika链接rabbitMq断裂_pika,BTAJ面试有关散列(哈希)表的面试题详解
2024年Python最全使用python的pika链接rabbitMq断裂_pika,BTAJ面试有关散列(哈希)表的面试题详解
2024年Python最全使用python的pika链接rabbitMq断裂_pika,BTAJ面试有关散列(哈希)表的面试题详解
|
开发框架 JavaScript 前端开发
什么是渐进式框架?作用是什么?如何使用?
什么是渐进式框架?作用是什么?如何使用?
944 0
|
机器学习/深度学习 算法 数据可视化
YOLO+混合注意力机制 | YOLOv5再加4.3%才可以做对手,Transformer混合设计依旧可以卷
YOLO+混合注意力机制 | YOLOv5再加4.3%才可以做对手,Transformer混合设计依旧可以卷
450 0