1
pdfCreate
に電話すると、インシデントがロードされ、正常に動作します。promisのNodejイベントが解決しない
次に、createIncidentReport
が付属のサービスから呼び出されていますが、これはうまく動作します。
pdfStream.on('finish')
は、PDFがディスクに書き込まれると呼び出されますが、これはコンソールで正常に動作します。ログは書き込まれますが、メールサービスは呼び出されません。約束をどのように解決すればよいですか?
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);
}
あなたは、PDFストリームのfinshイベントを取得するのですか? console.logは「pdfを書き終えました」と表示していますか? –
はいコンソールログの終了を表示しています... – Nealv