Я извлекаю файл Excel из API, и мне нужно прочитать и изменить его с помощью библиотеки xlsx.Я использую узел 8.10 и async / await для этого:
const report = await getVisitorReport(visitorQueryString, 'test12.xls', uri);
let workbook = XLSX.readFile('test12.xls');
А вот функция getVisitorReport.Обратите внимание, что я разрешаю обещание о завершении для канала:
async function getVisitorReport(queryString, reportPath, uri) {
return new Promise((resolve, reject) => {
request({
url: uri,
qs: queryString,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Basic ' + new Buffer(process.env.username + ':' + process.env.password, 'utf8').toString('base64')
}
}, (error, response, body) => {
if (error) {
reject(error);
} else {
if (response.statusCode === 200) {
resolve(body);
} else if (response.statusCode === 409) {
setTimeout(() => {
resolve(getVisitorReport(queryString));
}, response.headers['Retry-After'] * 1000);
} else {
reject(response);
}
}
}).pipe(fs.createWriteStream(reportPath)).on('finish', resolve(reportPath));
});
}
Файл извлекается и создается правильно.Кажется, что вторая строка XLSX.readFile ('test12.xls') происходит до того, как файл будет сохранен локально.Что я здесь не так делаю?Как мне убедиться, что файл сохранен, прежде чем я попытаюсь его прочитать?Почему .pipe.on («Готово», «Решить») не выполняет этого?Спасибо за помощь!