【发布时间】:2015-10-24 02:35:06
【问题描述】:
我在 node.js 文件系统中遇到了问题。 这是我的代码。 我的函数总是返回一个空字符串。 我想知道无论如何要让我的函数停止执行,直到 readFile 方法完成。
var fs = require('fs');
function myfun(filePath){
var str = '';
fs.readFile(filePath, function(err, data){
if(err) throw err;
str = data;
});
return str; //here, the variable str always return '' because the function doesn't wait for the readFile method complete.
}
添加说明
实际上我正在做这样的事情: 函数 myfun 用于替换 str 你可以看到我的代码:
function fillContent(content) {
var rex = /\<include.*?filename\s*=\s*"(.+?)"\/>/g;
var replaced = fileStr.replace(rex, function (match, p1) {
var filePath = p1
var fileContent = '';
fs.readFile(filePath, function (err, data) {
if (err) {
throw err;
}
fileContent = data;
});
return fileContent;
});
return replaced;// here, the return value is used for replacement
}
我需要一个replace函数中的返回值,所以这就是我没有使用回调函数的原因
【问题讨论】:
-
@GopinathShiva 将
return str;放入回调中不会有任何好处。 OP 你正在寻找fs.readFileSync()。 -
如果你真的需要和
.replace()一起使用,你应该使用fs.readFileSync()。 -
感谢 robertklep,我想知道我在替换函数中使用 fs 是否是个好方法
标签: javascript node.js fs