NodeJS

事件处理

Event

代码示例:

// server.js

const http = require('http')
const https = require('https')
const url = require("url")
const {EventEmitter} = require('events')

let event = null

function httpGet() {
    let data = ''
    https.get(``,
        (res) => {
            res.on('data', (chunk) => {
                data += chunk
            })
            res.on('end', () => {
                console.log(data)
                event.emit('play', data)  // 触发play,并把data传过去
            })
        })
}

http.createServer((req, res) => {
    const urlObj = url.parse(req.url, true)
    res.writeHead(200, {
        'Content-Type': 'application/json;charset=utf-8',
        'access-control-allow-origin': '*'
    })
    switch (urlObj.pathname) {
        case '/api/foo':
            event = new EventEmitter()  // 防止重复创建event对象(没有被销毁)
            event.on('play', (data) => {
                console.log(data)
                res.end(data)
            })
            return httpGet()
        default:
            res.end('404')
    }
}).listen(3000)