javascript动作事件有哪些(JavaScript之事件循环案例讲解)
javascript动作事件有哪些
JavaScript之事件循环案例讲解js中的事件循环因为JavaScript是单线程的,同一事件只能执行一种方法,所以会将程序中的方法加入到执行栈中按照后进先出的顺序依次执行,当遇见异步任务时不会被阻塞,而是将任务放入事件队列中,继续执行执行栈中的同步代码,等当前执行栈中的所有任务都执行完毕则查找事件队列中的任务,并把任务的回调函数放入执行栈中,执行其中的同步代码,如此反复形成的循环被称为事件循环。
node.jsnode.js特点
事件驱动
从上向下执行代码,当遇到需要回调的地方就加入到事件队列中,主线程运行完就去执行事件队列中的回调。整个过程不会阻塞新的事件,也不需要维护已经建立的事件
非阻塞io
主线程空闲时,就开始循环事件队列,处理事件队列中的事件,如果该事件不是io任务就亲自处理,如果是io任务,则交给线程池处理并指定回调函数,然后继续循环队列中的其他事件,当阻塞操作完成后会将结果和回调函数放入队列中,主线程循环到时就执行该回调函数。
node.js优缺点优点
- 高并发:node.js用一个主线程处理所有的请求,然后对io操作进行异步处理,避开了创建、销毁线程以及在线程之间切换所需的开销和复杂性
- 适合io密集型应用
缺点:
- 不适合CPU密集型应用:长时间的计算会导致cpu时间片不能释放,使得后续io事件无法发起
- 不能充分利用多核cpu
- 可靠性低,一旦代码某个环节崩溃,整个系统都会崩溃
- restful api:请求和响应只需少量的文本,不需要大量的逻辑处理。可以处理数万条连接,只需请求api组织数据并返回即可
- 大量Ajax请求的场景中
- 聊天服务:轻量级,高流量,没有复杂的计算逻辑
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之事件循环内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- javascript 函数生命周期(JavaScript sleep睡眠函数的使用)
- javascript中求二维数组最小值(javascript实现数组最大值和最小值的6种方法)
- javascript弹出菜单(Javascript实现简易导航栏)
- javascript中window对象
- javascript 开发网站(帮你提高开发效率的JavaScript20个技巧)
- jquery留言板代码(JavaScript实现留言板添加删除留言)
- js实现继承的五种(JavaScript继承的三种方法实例)
- javascript数组实例扩展方法(JavaScript如何监测数组的变化)
- javascript中还原append代码(JS实现jQuery的append功能)
- javascript页面滚动窗口(javascript实现简单滚动窗口)
- js实时获取页面宽度(JavaScript获取网页的宽高及如何兼容详解)
- web前端快速入门之html(Web前端开发规范2017HTML/JavaScript/CSS)
- hashtable的javascript实现
- javascript变量值做函数名(JavaScript中变量提升和函数提升实例详解)
- 在vs中设置Javascript的智能提示
- dedecms新手建站教程网页设计(DEDECMS幻灯片中JavaScript实际应用举例)
- 每天1万吨牛奶倒进下水道,美国大萧条一幕重现(每天1万吨牛奶倒进下水道)
- 如何看待美国数十万加仑牛奶倒下水道 历史又重演了(如何看待美国数十万加仑牛奶倒下水道)
- 历史惊人的相似,美国80万加仑牛奶倒入下水道,意味着什么(历史惊人的相似)
- 美国数十万加仑牛奶倒进下水道,世界会重演1929年的大萧条吗(美国数十万加仑牛奶倒进下水道)
- 美国数十万加仑牛奶倒入下水道,贫民区食不果腹,历史再次重演(美国数十万加仑牛奶倒入下水道)
- 美国倒掉数十万加仑牛奶 上热搜第一,这一幕似曾相识(美国倒掉数十万加仑牛奶)
热门推荐
- phptime函数与时区设置(php常用日期时间函数实例小结)
- win7如何搭建php环境(阿里云Win2016安装Apache和PHP环境图文教程)
- python如何一行行读取文件(python 实现一次性在文件中写入多行的方法)
- javascript中定义数组的方法(JavaScript中数组sort方法的基本使用与踩坑记录)
- jquery实现微信中长按识别二维码
- javascript将字符串转换成数组(如何将JavaScript将数组转为树形结构)
- vueelementui动态表格(Vue Element前端应用开发之常规的JS处理函数)
- pythondjango后台管理(基于腾讯云服务器部署微信小程序后台服务Python+Django)
- mysql和explain哪个好(MySQL EXPLAIN输出列的详细解释)
- python numpy 安装(python3.6下Numpy库下载与安装图文教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9