node--非阻塞式I/O,单线程,异步,事件驱动

1、单线程

不同于其他的后盾语言,node是单线程的,大大节约服务器开支

node不为每个客户创建一个新的线程,仅使用一个线程。通过非阻塞I/O以及

事件驱动机制,使其宏观上看是并发的,可以处理高并发。

2、非阻塞式I/O

1)当我们遭遇异步时,可以通过以下方法解决:

①回调函数

在使用异步的函数时,追加提个回调函数为参数,在使用时传入所需要的回调即可

const fs = require('fs')

// 如何解决异步问题?
// 方法1:通过回调函数解决
function getContent(cb) {
fs.readFile('a.txt', (err, data) => {
if (err) {
console.log(err)
return false
}
cb(data)
})
} getContent((data) => {
console.log(data.toString())
})

②使用events模块进行监听

const fs = require('fs')
const events = require('events') // 如何解决异步问题?
// 方法2:通过node中events模块 //我们主要通过EventEmitter对象来进行广播和接收广播
const EventEmitter = new events.EventEmitter() //监听to_parent的广播,只进行监听
function getContent() {
fs.readFile('a.txt', (err, data) => {
if (err) {
console.log(err)
return false
}
EventEmitter.emit('data',data)
})
} getContent() EventEmitter.on('data', (data) => {
console.log(data.toString())
})
上一篇:BZOJ_2947_[Poi2000]促销_堆


下一篇:Node:使用express搭建一个简易的服务器