从readFile返回undefined
我试图让下面的代码工作:
'use strict'; var fs = require('fs'); var fileName = 'readme.txt'; var str = fs.readFile(fileName, 'utf8', function (err, data) { if (err) { console.log(err); throw err; } return data; }); console.log('result read: ' + str);
readme.txt文件:
console.log('working');
我试图显示以下内容:
result read: console.log('working');
readFile是asynchronous执行的,所以只能在callback函数内部访问data
,如果你希望它是同步的,你应该使用readFileSync
asynchronous:
'use strict'; var fs = require('fs'); var fileName = 'readme.txt'; var str = fs.readFile(fileName, 'utf8', function (err, data) { if (err) { console.log(err); throw err; } console.log('result read: ' + data); });
同步:
var str = fs.readFileSync(fileName, 'utf8'); console.log('result read: ' + str);
readFile是一个asynchronous方法(因此是callback函数)。在asynchronous函数的callback中,您需要console.log(或者任何您想要对结果执行的操作)。 这几乎是node.js的支柱 – 通过允许将asynchronous方法放到事件循环中,它可以防止代码被阻塞。
你正在调用一个asynchronous函数。 这意味着它不会等待被调用时返回,在这种情况下,将返回undefined。
您可以使用readFileSync方法同步调用它,也可以将console.log
放在callbackconsole.log
中