以下代码将index.html 的内容(仅包含文本hello world)输出到浏览器。然而,当我更换readFile()
with readFileSync()
,请求超时。
我缺少什么?是否需要不同类型的缓冲区?我使用的是node 0.61 和express 2.4。
var express = require('express');
var fs = require('fs');
var app = express.createServer(express.logger());
app.get('/', function(request, response) {
fs.readFile('index.html', function(err, data){
response.send(data.toString());
});
});
var port = process.env.PORT || 5000;
app.listen(port, function() {
console.log("Listening on " + port);
});
fs.readFile http://nodejs.org/api/fs.html#fs_fs_readfile_filename_options_callback正如您所展示的那样,进行回调并调用response.send - 很好。如果你只是将其替换为fs.readFileSync http://nodejs.org/api/fs.html#fs_fs_readfilesync_filename_options,您需要注意它不接受回调,因此调用 response.send 的回调永远不会被调用,因此响应永远不会结束并且会超时。
如果您不是简单地将 readFile 替换为 readFileSync,则需要显示 readFileSync 代码。
另外,只是让你知道,你应该never在节点express/webserver中调用readFileSync,因为它会在执行I/O时占用单线程循环。您希望节点循环处理其他请求,直到 I/O 完成并且回调处理代码可以运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)