为什么这段异步读取不生效

tianxia007 发布于 2019/05/01 11:31
阅读 69
收藏 0

var http = require("http");
var fs = require("fs")
var events = require('events')
var eventEmitter = new events.EventEmitter();

http.createServer(function(request, response) {
    response.writeHead(200, {
        'Content-Type': 'text/plain'
    });
    //异步  
    readFileNoSync('C:/Users/admin/Documents/HBuilderProjects/vuepro/README.md');

    response.end('...');

    eventEmitter.on('getfile', function(info) {
        response.end(info);
    })

}).listen(92);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:92/');

function readFileNoSync(fpath) {
    var re = 'init';
    fs.readFile(fpath, function(err, data) {
        // console.log(err,data);
        if (err) {
            console.log(err)
        }
        re = (data.toString());
        console.log(re);
        eventEmitter.emit('getfile', re);
    })
    return re;
}
 

加载中
0
CocoaSui
CocoaSui

response.end() 调用后,应该就已经结束响应了,之后的内容自然也不会发送给 client 端,异步读取文件的完成显然也是在 response.end()之后了。

试试拿掉多的 response.end('...');

参考response.end()

 

返回顶部
顶部