2 回答

TA贡献1853条经验 获得超18个赞
您期望callback函数在调用函数时执行synchronously。
更新类似于下面的代码
async function getRandomLine(filename) {
return new Promise(function (resolve, reject) {
fs.readFile(filename, function (err, data) {
if (err) reject(err); // Reject in case of error
data += "";
var lines = data.split("\n");
line = lines[Math.floor(Math.random() * lines.length)];
console.log(line);
resolve(line); // Resolve if success
});
});
}
async function generateRandomCouple(f1, f2) {
male = await getRandomLine(f1);
female = await getRandomLine(f2);
return male + " & " + female;
}
(async function() {
couple = await generateRandomCouple("./maleNames.txt", "./femaleNames.txt");
console.log(couple);
})();

TA贡献1829条经验 获得超9个赞
fs.readFile异步运行。getRandomLine立即返回未定义。要使其按预期工作,您可能希望使用async-await. 是这样的:
async function getRandomLine(filename) {
var x= await fs.readFile(filename, 'binary');
....
return new Buffer(x)
}
添加回答
举报