Функция с массивом параметров выполняется одновременно. Как сделать чтобы параметры подставлялись в функцию по очереди?

у меня есть массив с объектами, которые я использую как данные для поиска в интернете. в массиве несколько объектов, то если передавать их значение в функцию - они выполняются одновременно. как сделать так, чтобы следующее условие передавалась в функцию после того, как полностью пройдет весь процесс функции по предварительным условием?

let listOfCompanies = [
    {companyName: "Google", title: "CTO"},
    {companyName: "Google", title: "VP"},
    {companyName: "Google", title: "CEO"},
    {companyName: "Google", title: "Sales Analyst"},
    {companyName: "Google", title: "UX Designer"}
];

listOfCompanies.forEach(scrape(item).then((value) => {
    (async () => {
        let personInfo = [];
            personInfo.push(value);
            console.log(personInfo);

            csvWriter
                .writeRecords(personInfo)
                .then(()=> console.log('The CSV file was written successfully'));

        })();
    }));

Ответы (1 шт):

Автор решения: vsemozhetbyt

В таких случаях удобно использовать цикл for...of внутри асинхронной обёртки:

'use strict';

(async function main() {
  let listOfCompanies = [
      {companyName: "Google", title: "CTO"},
      {companyName: "Google", title: "VP"},
      {companyName: "Google", title: "CEO"},
      {companyName: "Google", title: "Sales Analyst"},
      {companyName: "Google", title: "UX Designer"}
  ];

  try {
    for (const item of listOfCompanies) {
      const value = await scrape(item);

      let personInfo = [];
      personInfo.push(value);
      console.log(personInfo);

      await csvWriter.writeRecords(personInfo);
      console.log('The CSV file was written successfully');
    }
  } catch (err) {
    console.error(err);
  }
})();
→ Ссылка