У меня вызывается функция, которая должна возвращать значение. Значение существует внутри функции обратного вызова внутри функции downloadOrders. Проблема «go» (войти в систему post request
) печатается до «close» (войти в систему downloadOrders
). Поэтому я не могу вернуть значение encodedPdf. Что мне нужно сделать?
app.post('/api/***', async (req, res) => {
try {
const result = await orderServices.downloadOrders(data);
console.log("go")
if(result){
res.status(200).send(JSON.stringify(result));
} else {
res.status(400).send({err: 'Error creating PDF document.'});
}
} catch(err){
}
});
async downloadOrders(data){
try {
let documents = ["sample.pdf"];
const pdfStream = pdfmerger(documents);
var writeStream = fs.createWriteStream('merged-pdf.pdf');
pdfStream.pipe(writeStream);
pdfmerger(documents, 'merged-pdf.pdf');
pdfStream.on('close', function(code){
console.log("close")
let encodedPdf = base64.base64Encode('merged-pdf.pdf');
return encodedPdf;
});
} catch(err){
console.log(err)
return false;
}
}