Node.js 事件循环

栏目: Node.js · 发布时间: 6年前

内容简介:Node.js 是单进程单线程应用程序,但是因为V8引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。Node.js 几乎每一个API都支持回调函数。Node.js 基本上所有都事件机制都是通过观察者模式实现

Node.js事件循环

Node.js 是单进程单线程应用程序,但是因为V8引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

Node.js 几乎每一个API都支持回调函数。

Node.js 基本上所有都事件机制都是通过观察者模式实现

Node.js 单线程类似进入一个while(true)事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,

如果有事件发生就调用该回调函数。

事件驱动程序

Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。

当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。

这个模型非常高效可扩展性非常强,因为webserver一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)

在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

Node.js 事件循环

//引入events
const events = require('events')
// 创建eventEmitter对象
const eventEmitter = new events.EventEmitter();

// 创建时间处理程序 
var connectHandler = function connected (){
    console.log('连接成功')
    // 出发data_received事件
    eventEmitter.emit('data_received')
}
// 绑定connection事件处理程序
eventEmitter.on('connection', connectHandler)

// 使用匿名函数绑定data_received事件
eventEmitter.on('data_received',() => {
    console.log('数据接收成功。')
})
// 触发connection事件
eventEmitter.emit('connection')

console.log('程序执行完毕')

Node.js 事件循环

Node应用程序是如何工作的 ??

在Node应用程序中,执行异步操作都函数将回调函数作为最后一个参数,回调函数接收错误对象做一个第一个参数。

const fs = require("fs")

fs.readFile('input.txt',(err,data) => {
    if(err) {
        console.log(err)
    }else{
        console.log(data.toString())
    }
})
console.log("程序执行结束!")

这段代码,input.txt文件我给删除了,所以在执行过程中,发生错误,错误err对象就会输出错误信息。

Node.js 事件循环


以上所述就是小编给大家介绍的《Node.js 事件循环》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learn Python the Hard Way

Learn Python the Hard Way

Zed Shaw / Example Product Manufacturer / 2011

This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具