当我致电pdfCreate
时,会加载一个事件,这很正常。
然后从包含的服务中调用createIncidentReport
,这可以正常工作。
pdfStream.on('finish')
,这在控制台上运行正常。写入日志,但不调用邮件服务。我该如何解决这个承诺?
function pdfCreate(incidentId) {
Incident.findById(incidentId)
.then(incident => pdfService.createIncidentReport(incident))
.then(() => mailservice.sendPdfCreatedMail(incident));
}
function createIncidentReport(incident, res) {
return new Promise((resolve, reject) => {
let pdfStream = fs.createWriteStream(settings.PDF.DIRECTORY + incident.id + '.pdf');
incidentReport.pipe(pdfStream);
pdfStream.on('finish', function () {
console.log('finished writing pdf')
resolve();
});
}
}
function sendPdfCreatedMail(incident) {
console.log('mail');
let message = {
to: incident.reporter.email,
subject: 'Incident completed',
text: 'Incident has been completed.',
html: 'Incident has been completed.'
};
sendMessage(message);
}
答案 0 :(得分:2)
好的,我找到了答案。
.then(() => mailservice.sendPdfCreatedMail(incident));
期待一个事件,我的决心没有通过它,因此函数没有解决,因为缺少参数。
通过这样做解决了这个问题:
resolve(incident);
.then(incident => mailservice.sendPdfCreatedMail(incident));