I have a function being called which needs to return a value. The value exists inside a callback function inside of the downloadOrders function. The issue is "go" (log in post request) is printed before "close" (log in downloadOrders). So I'm not able to return the encodedPdf value. What do I need to do?
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;
}
}