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())
})

猜你喜欢

转载自www.cnblogs.com/Tanqurey/p/11145097.html