zoukankan      html  css  js  c++  java
  • 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())
    })
  • 相关阅读:
    pt-heartbeat(percona toolkit)
    pt-find使用
    pt-duplicate-key-checker使用
    Unity3D 之IAP
    Unity3D 之IAP
    JDK环境变量
    Android环境变量的设置(详细图解版)
    Android sdk 更新失败解决方发整理
    unity开发android游戏(一)搭建Unity安卓开发环境
    Unity使用 UnityVS+VS2013 调试脚本
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/11145097.html
Copyright © 2011-2022 走看看