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);