【发布时间】:2023-01-20 18:27:43
【问题描述】:
我想生成多个 pdf 文件并附加到电子邮件中。但是 await 似乎无法在 res.app.render 上工作。
route.get('/:id/receipts', async function (req, res) {
...
let attachments = [];
for await(let item of items){
res.view.item = item;
console.log(1)
await res.app.render('pdfs/receipt', res.view, async function(err, html){
console.log(2)
if (err) return res.end(err.stack)
return await pdf.create(html).toBuffer(async function(err, buffer){
console.log(3)
attachments.push({
content: buffer,
filename: 'receipt.pdf',
})
});
});
}
console.log(4)
...
})
期待结果:
1
2
3
4
实际结果:
1
4
2
3
【问题讨论】:
-
这是正确的行为,因为
console.log(4)不在for await块中,并且它同步运行。
标签: node.js express async-await