Вот что я работаю с:Каков правильный способ разобрать CSV, создавая асинхронные HTTP-запросы после возвращения всех запросов, чтобы затем использовать агрегированные данные?
readableStream.pipe(csv.parse({
auto_parse: true,
}))
.on('data', function(row) {
parseRow(row)
parseRowSomeMore(row)
useRowInfoInAsyncHTTPRequest(row)
useRowInfoINAsyncHTTPRequestAgain(row)
});
readableStream.on('end', function() {
doSomethingWithParsedRowsAndReturnedAsyncRequestData();
});
Надеется, что этот пример кода примеров является то, что я читаю файл CSV, и на каждой порции данных (что информация строки), я хочу проанализируйте эту строку как-то, а также выполните асинхронный HTTP-вызов, используя информацию о строках. Наконец, после прочтения данных, я хочу использовать агрегированные данные, как только все асинхронные запросы и синтаксический анализ строк будут завершены. Однако то, с чем я сталкиваюсь, заключается в том, что после того, как узел считывает последний кусок данных, он автоматически запускает «конечный» эмиттер, но последние асинхронные запросы, возможно, еще не обработаны, и, следовательно, информация в эмитенте «end» не отражает всю информацию, которую я хочу.
- Является ли это структурой/процессом, который я хочу для чтения CSV с использованием узла?
- Если это структура/процесс, как я могу гарантировать, что я получаю всю необходимую асинхронную информацию до срабатывания триггера «end»?
Ваше название вопроса делает довольно понятным, что этот вопрос слишком широк. Возможно, вы могли бы разделить его на несколько вопросов и спросить их отдельно? Или, может быть, вы могли бы просто переписать его, поэтому он просит 1 краткую вещь – byxor