【发布时间】:2020-12-07 05:29:27
【问题描述】:
我正在尝试使用 fs 库读取文件,然后在迭代后替换一些元素,然后返回组合字符串 但是,该函数返回 undefined
function concatproduce(order, producestring) {
if (order.cart.produce[0].productid != null) {
order.cart.produce.forEach((element, index) => {
if (!element.delstatus) {
element.delstatus = 'Pending';
}
fs.readFile('controllers/ordercartitemtemplate.html', 'utf8', function(err, data) {
if (err) {
return console.log('lima' + err);
}
//console.log(data)
producestring += (data
.replace('//Filename//', element.imageURL)
.replace('//Prodname//', element.producename)
.replace('//Quantity//', element.quantity)
.replace('//Price//', element.price)
.replace('//Total//', element.total)
.replace('//Delstatus//', element.delstatus));
});
});
return producestring;
}
}
【问题讨论】:
-
fs.readFile是异步的。因此,fs.readFile的回调不会在return producestring执行之前调用,这就是为什么它总是返回 undefined。我建议您花点时间观看此youtube.com/watch?v=8aGhZQkoFbQ&ab_channel=JSConf 或stackoverflow.com/questions/750486/…
标签: javascript node.js foreach return fs