我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript之事件循环案例讲解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript之事件循环案例讲解

js中的事件循环

因为JavaScript是单线程的,同一事件只能执行一种方法,所以会将程序中的方法加入到执行栈中按照后进先出的顺序依次执行,当遇见异步任务时不会被阻塞,而是将任务放入事件队列中,继续执行执行栈中的同步代码,等当前执行栈中的所有任务都执行完毕则查找事件队列中的任务,并把任务的回调函数放入执行栈中,执行其中的同步代码,如此反复形成的循环被称为事件循环。

node.js

node.js特点

事件驱动

从上向下执行代码,当遇到需要回调的地方就加入到事件队列中,主线程运行完就去执行事件队列中的回调。整个过程不会阻塞新的事件,也不需要维护已经建立的事件

非阻塞io

主线程空闲时,就开始循环事件队列,处理事件队列中的事件,如果该事件不是io任务就亲自处理,如果是io任务,则交给线程池处理并指定回调函数,然后继续循环队列中的其他事件,当阻塞操作完成后会将结果和回调函数放入队列中,主线程循环到时就执行该回调函数。

node.js优缺点

优点

  1. 高并发:node.js用一个主线程处理所有的请求,然后对io操作进行异步处理,避开了创建、销毁线程以及在线程之间切换所需的开销和复杂性
  2. 适合io密集型应用

缺点:

  1. 不适合CPU密集型应用:长时间的计算会导致cpu时间片不能释放,使得后续io事件无法发起
  2. 不能充分利用多核cpu
  3. 可靠性低,一旦代码某个环节崩溃,整个系统都会崩溃

适用场景:

  1.  restful api:请求和响应只需少量的文本,不需要大量的逻辑处理。可以处理数万条连接,只需请求api组织数据并返回即可
  2. 大量Ajax请求的场景中
  3. 聊天服务:轻量级,高流量,没有复杂的计算逻辑

node.js的事件循环 

node事件循环依靠libuv引擎,v8解释js代码后调用对应的node api,这些api由libuv引擎驱动执行对应任务,并把不同的事件放入不同的队列中等待主线程执行,因此node的事件循环存在于libuv引擎中

libuv引擎:实现了事件循环、文件操作等,是node.js实现异步的核心

node.js的单线程仅仅指JavaScript运行在单线程中,内部可以通过线程池完成io操作

poll(查询阶段)---》check(检查阶段)---》close callback(关闭事件回调阶段)---》timer(定时器检测阶段)---》io回调阶段---》闲置阶段---》轮询阶段

poll阶段(轮询阶段):

v8将js代码解析后传入libuv引擎中,循环首先进入poll阶段。先查看poll队列是否有事件,有就按先进先出顺序执行回调

到此这篇关于JavaScript之事件循环案例讲解的文章就介绍到这了,更多相关JavaScript之事件循环内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript之事件循环案例讲解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript之事件循环的示例分析

这篇文章主要介绍JavaScript之事件循环的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!js中的事件循环因为JavaScript是单线程的,同一事件只能执行一种方法,所以会将程序中的方法加入到执行栈中按
2023-06-20

Javascript前端事件循环机制详细讲解

单线程的同步等待极大影响效率,任务不得不一个一个等待执行,对于网页应用是无法接受的。所以Javascript使用事件循环机制来解决异步任务的问题。本文就来讲讲Javascript的事件循环机制,希望对你有所帮助
2022-12-30

详解JavaScript事件循环

JavaScript事件循环是一种机制,用于处理异步事件和回调函数。它是JavaScript运行时环境的一部分,负责管理事件队列和调用栈。文章中有详细的代码示例,需要的朋友可以参考一下
2023-05-16

JavaScript事件循环实例分析

这篇文章主要讲解了“JavaScript事件循环实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript事件循环实例分析”吧!前言异步函数也是有执行顺序的。本质上来说,Ja
2023-07-02

Node.js 事件循环详解及实例

Node.js 事件循环详解及实例Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。Node.js 基本
2022-06-04

Javascript单线程和事件循环实例分析

本篇内容介绍了“Javascript单线程和事件循环实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、单线程Javascript 是
2023-07-02

Vue中addEventListener()监听事件案例讲解

这篇文章主要介绍了Vue中addEventListener()监听事件案例讲解,包括语法讲解和事件冒泡或事件捕获的相关知识,本文结合示例代码给大家讲解的非常详细,需要的朋友可以参考下
2022-12-31

对Linux下shell编程之for循环的实例讲解

linux 下 for 循环中可以使用 break 和 continue 关键字来跳出循环, 和java 用法一致 一、常用for循环结构#语法一 for 变量 in 值1 值2 值3..do程序块儿done # #语法二 for
2022-06-04

编程热搜

目录