node笔记(四)-Nodejs的非阻塞IO、异步以及 事件驱动EventEmitter解决异步

mime.json

{
    ".323": "text/h323",
    ".3gp": "video/3gpp",
    ".aab": "application/x-authoware-bin",
    ".zip": "application/zip",
    ".json": "application/json"
}

异步执行顺序

异步的方法,会等到同步处理完后,才开始执行

var fs = require('fs');

console.log('1')
function getMime(){
    fs.readFile('mime.json',function(err,data){
        console.log(data.toString())
        console.log('2')
    })
}
console.log('3')
getMime()

clipboard.png

非阻塞io

直接调用,拿不到异步方法,请求的数据

function getMime(){
    fs.readFile('mime.json',function(err,data){
        return data;
    })
}
console.log(getMime())  //underfind

回调函数

var fs = require('fs');

function getMime(callback){
    fs.readFile('mime.json',function(err,data){
        callback(data);
    })
}
getMime(function(result){
    console.log(result.toString())
})

clipboard.png

node.js 事件驱动

最简单的事件驱动
var events = require('events');
var EventEmitter = new events.EventEmitter();
EventEmitter.on('to_mime', function (data) {
    console.log(data);  //给mime发送的数据
})

EventEmitter.emit('to_mime', '给mime发送的数据')
事件驱动里有事件驱动
var events = require('events');
var EventEmitter = new events.EventEmitter();
EventEmitter.on('to_mime', function (data) {
    console.log(data);
})
EventEmitter.on('to_parent',function(data){
    console.log(data);
    EventEmitter.emit('to_mime','给mime发送的数据')
})

setTimeout(function(){
    console.log('开始广播...');
    EventEmitter.emit('to_parent','发送的数据')
},1000)

clipboard.png

获取mime.json里的数据
var fs = require('fs');
var events = require('events');
var EventEmiter = new events.EventEmitter();

function getMime(){
    fs.readFile('mime.json',function(err,data){
        EventEmiter.emit('data',data)
    })
}
getMime()

EventEmiter.on('data',function(mime){
    console.log(mime.toString())
})

clipboard.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值