1
var urls = [];

function workTable(__dirname, urls) {
    XlsxPopulate.fromFileAsync(__dirname + "/public/scripts/parser/upload_file/table_data.xlsx")
        .then(workbook => {       
            for (let colums = 2; typeof workbook.sheet("Лист1").cell(`A${colums}`).value() != "undefined"; colums++) {
                const url = workbook.sheet("Лист1").cell(`A${colums}`).value();
                urls.push(url);
            } 
        });
}

workTable(__dirname, urls);

console.log(urls);

В консоли я вижу пустой массив. Я понимаю, что там асинхронная функция. Как правильно расположить await или что нужно сделать? Есть вариант поставить задержку, но хотелось бы как-то иначе это реализовать

Решение:

async function workTable() {
    var urls = [];
    const urlsReturn = await XlsxPopulate.fromFileAsync(__dirname + "/public/scripts/parser/upload_file/table_data.xlsx").then(workbook => {       
            for (let colums = 2; typeof workbook.sheet("Лист1").cell(`A${colums}`).value() != "undefined"; colums++) {
                const url = workbook.sheet("Лист1").cell(`A${colums}`).value();
                urls.push(url);
            }
            return urls;
        });
    return urlsReturn;
}

const urls = await workTable();

console.log(urls);

G.B
  • 47

0 Answers0