首页 > 编程语言 > 详细

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

时间:2019-07-07 12:40:41      阅读:82      评论:0      收藏:0      [点我收藏+]

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

 

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

原文:https://www.cnblogs.com/Tanqurey/p/11145097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!