Node.js - 回调和事件驱动解决异步

2019-03-15  本文已影响0人  饮杯梦回酒

导读:

例子:

const fs = require('fs')

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

console.log(getMime());  // undefined     原因:当执行到readFile()时,由于是异步读取文件,故该函数执行完成,首先返回了undefined
const fs = require('fs')

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

getMime((result) => {
    console.log(result.toString());  // 获取到值
})
const events = require('events')
const fs = require('fs')

let EventEmitter = new events.EventEmitter()

// 广播和 接收广播
// 监听 to_parent的广播

/*EventEmitter.on('to_parent', (data) => {
    // 监听到广播后才执行回调
    console.log(`接收到了这个广播事件的数据:${data}`)   // 2.接收到了这个广播事件的数据:send
})

setTimeout(() => {
    console.log('开始广播...')    // 1.开始广播
    // 广播to_parent事件
    EventEmitter.emit('to_parent', 'send')
},100)*/


function getMime(callback) {
    fs.readFile('mime.json',function(err,data) {
        EventEmitter.emit('data', data)     // 异步处理到这里就广播data事件
    })
}

getMime()

EventEmitter.on('data', (data) => {
    console.log(data.toString())
})   // 接收广播拿到传来的数据

总结:

上一篇 下一篇

猜你喜欢

热点阅读