node事件循环

Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。

Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。

Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。

Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.

时间: 2024-11-03 01:29:32

node事件循环的相关文章

node事件循环和消息队列简单分析

node的好处毋庸置疑,事件驱动,异步非阻塞I/O,以及处理高并发的能力深入人心,因此大家喜欢用node做一些小型后台服务或者作为中间层和其他服务配合完成一些大型应用场景. 什么是异步? 异步和同步应该是经常谈的一个话题了.同步的概念很简单,自上而下依次执行,必须等上边执行完下边才会执行.而异步可以先提交一个命令,中间可以去执行别的事务,而当执行完之后回过头来返回之前的任务. 举个栗子: 你很幸运,找了一个漂亮的女朋友,有一天你的女朋友发短信问你晚上看什么电影?但你并不知道看什么,马上打开电脑查

node.js 回调函数、事件循环、EventEmitter ar

异步编程  node.js 编程的直接体现就是回调,异步编程依托于回调来实现: node使用了大量的回调函数,所有API都支持回调函数 .如读取文件等. 这里对不懂线程和异步和同步的稍微解释下这三个名词 . 线程 : 简单的说就是做一件事 . 即执行一段程序代码 .js引擎就是一个单线程 的 处理 方式 .单线程是说 同一时间只能做一件事 . 同步 :就是这件事必须要先做完前面的才能做后面的,否则后面的无法完成. 这就像我们的js代码会从上往下 运行 . 异步 :简单的说就是两个线程,你做你的,

03 js事件循环

1. js里重要的是事件循环. 参考:https://nodejs.org/en/docs/guides/ 中文版:https://github.com/nodejs/nodejs.org/tree/master/locale/zh-cn/docs/guides 写的好的:https://segmentfault.com/a/1190000013861128 好吧,班门弄斧,我简单介绍下,node事件循环,就是不停地去清空任务队列,这里有 微任务,宏任务之分. 微任务: process.next

初学Node(四)事件循环

Node中的事件循环 事件循环是Node的核心,正是因为有了事件循环JS才能够在服务端占有一席之地.JS是一种单线程语言,但是它的执行环境是多线程的在加上JS的事件驱动这一特点,使使JS在执行的过程中没执行到一个异步操作就交由后台处理然后继续向下执行,在遇上一个异步操作又交由后台处理,JS的执行线程不会发生阻塞,一旦JS代码执行完毕就会去后台查看有没有满足条件的异步操作一旦有满足条件的就执行事先定义好的处理函数. 在Node中通过EventEmitter(事件发生器)来实现这种功能,EventE

理解 node.js 的事件循环

node.js 的第一个基本观点是,I/O 操作是昂贵的: 目前的编程技术最大的浪费来自等待 I/O 操作的完成.有几种方法可以解决这些对性能的影响(来自Sam Rushing): 同步:依次处理单个请求. 优点:简单. 缺点:任何一个请求都会阻塞其余请求. 创建新进程:为每个请求创建一个进程处理 优点:容易. 缺点:扩展性不好,数百个连接意味着数百个进程.fork()是 Unix 程序员的锤子.因为它很有用,所有的问题都像是钉子.但这通常是多余的. 线程:为每个请求创建一个线程处理. 优点:容

node.js的作用、回调、同步异步代码、事件循环

http://www.nodeclass.com/articles/39274 一.node.js的作用 I/O的意义,(I/O是输入/输出的简写,如:键盘敲入文本,输入,屏幕上看到文本显示输出.鼠标移动,在屏幕上看到鼠标的移动.终端的输入,和看到的输出.等等) node.js想解决的问题,(处理输入,输入,高并发 .如 在线游戏中可能会有上百万个游戏者,则有上百万的输入等等)(node.js适合的范畴:当应用程序需要在网络上发送和接收数据时Node.js最为适合.这可能是第三方的API,联网设

Node.js 事件循环

原文:https://github.com/nodejs/node/blob/master/doc/topics/event-loop-timers-and-nexttick.md 什么是事件循环(Event Loop) 事件循环能让 Node.js 执行非阻塞 I/O 操作 -- 尽管JavaScript事实上是单线程的 -- 通过在可能的情况下把操作交给操作系统内核来实现. 由于大多数现代系统内核是多线程的,内核可以处理后台执行的多个操作.当其中一个操作完成的时候,内核告诉 Node.js,

Node - 浅谈对非阻塞I/O、事件循环的理解

Node.js的主要特点 单线程.非阻塞I/O.事件驱动,这三个特点是相辅相成的. Node为了在低硬件服务器条件下高并发,所以减少了内存消耗,选择单线程: 因为只有一个线程,所以必须非阻塞I/O,每件事情都有回调函数: 为了合理调度,Node使用了事件环的机制,采用事件驱动来调度事件. 非阻塞I/O I/O是输入(input).输出(output)的简称. 阻塞I/O和非阻塞I/O的区别在于系统在输入与输出的期间,能不能接收输入. 举个例子:餐厅服务员招待客人 阻塞I/O:餐厅有多个服务员(多

node.js事件循环 event loop

Nodejs事件循环 (event loop) node.js 事件循环的概念 当node.js 启动的时候会初始化eventloop ,每一个evnet loop 都会包含如下6个循环阶段,node.js 事件循环和浏览器事件循环完全不一样. 官网文档:https://nodejs.org/zh-cn/docs/guides/event-loop-timers-and-nexttick/ timers pending callbacks (I/O callbakcs) idle, prepar