我正在尝试使用node.js从文件中异步读取。这是我使用的代码:
var fs = require('fs');
fs.readFile('C:\\Users\\aonal\\Desktop\\gelenhamveri.txt', 'utf8', function(err, contents) {
console.log(contents);
//return contents // didn't work. I tried to return it to a variable.
});
console.log('after calling readFile');
console.log(contents); //empty. I want to use it here.
我无法触及功能之外的内容。我试图返回它或将其分配给全局变量,但它不起作用。我的最终目的是将所有代码导出为函数,然后在不同的模块中使用它,如下所示:
module.exports = {
readFile : function(){//Same as above...}
}
所以我需要返回内容。我的问题是如何从它返回一个变量以在匿名函数之外使用?
答案 0 :(得分:2)
通常,像fs.readFile
这样的异步函数会将回调函数作为最后一个参数。读取文件后将调用该函数。
如果你想用你自己的代码包装这些函数,你需要继续相同的范例;换句话说,你的函数也应该接受一个回调函数:
var fs = require('fs');
module.exports = {
readFile : function(callback) {
fs.readFile('C:\\Users\\aonal\\Desktop\\gelenhamveri.txt', 'utf8', callback)
}
}
任何调用代码也需要传递一个回调函数:
yourModule.readFile(function(err, contents) {
if (err) {
console.error('an error occurred!', err);
return;
}
console.log(contents);
});
正如其他人所建议的那样,你也可以使用promises代替传递回调函数,这是异步代码处理的另一种方法。
答案 1 :(得分:1)
您可以尝试使用Promise
ls
答案 2 :(得分:0)
bluetoft和Maantje的回答是正确的。您必须使用 readFileSync()并将输出分配给变量