I'm making a program that consists of three different functions:
- downloadPDF: download a PDF from the web
- getPDF: read and parse the pdf
- getDaata: loop through getPDF
Problem I'm having is that the third function(getData) that has a for of loop that runs getPDF, it seems as if it doesn't let getPDF finish before trying to console.log the result that getPDF returns.
Here are the three functions:
async function downloadPDF(pdfURL, outputFilename) {
  let pdfBuffer = await request.get({uri: pdfURL, encoding: null});
  console.log("Writing downloaded PDF file to " + outputFilename + "...");
  fs.writeFileSync(outputFilename, pdfBuffer);
}
async function getPDF(query, siteName, templateUrl, charToReplace) {
  const currentWeek = currentWeekNumber().toString();
  await downloadPDF(templateUrl.replace(charToReplace, currentWeek), "temp/pdf.pdf");
  var resultsArray = []
  let dataBuffer = fs.readFileSync("temp/pdf.pdf");
    pdf(dataBuffer).then(function(data) {
      pdfContent = data.text;
      const splittedArray = pdfContent.split("\n");
      const parsedArray = splittedArray.map((item, index) => {
          if(item.includes(query)) {
              resultsArray.push({result: item, caseId: splittedArray[index-1].split(',', 1)[0], site: siteName});
          }
        }).filter(value => value);
        return(resultsArray);
  });
  fs.unlinkSync("temp/pdf.pdf"); //deletes the downloaded file
}
async function getData(query, desiredSites) {
  var resultsArray = []
  for (const value of desiredSites) {
    let result = await getPDF(query, sitesList.sites[value].name, sitesList.sites[value].templateUrl, sitesList.sites[value].charToReplace);
    console.log(result)
  }
}
getData("test", ['a', 'b']);
In the bottom function(getData), the console.log results in undefined
I'm guessing this has something to do with the promises. Any ideas? Thanks a lot!
 
    