Node js - Как сгенерировать файлы в цикле синхронно?

68
9

Моя задача - генерировать файлы excel для нескольких пользователей в узле js + express. Я пробовал делать это в цикле, и, конечно же, он работает.

Но что происходит, он будет принимать этот цикл в памяти и генерировать файлы одновременно. Скажем, есть 10000 пользователей в системе, и я хочу сгенерировать файлы в одной функции или в cron, тогда он выйдет из памяти, и работа завершится неудачно.

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

Как я могу развить такую систему в узле js? Я попробовал async, но в основном работает так же, как и предыдущий подход. Я хочу получить окончательный ответ "закончен", когда генерируются все файлы. Не раньше этого.

async function printFiles () {
const files = await [ ...Array(10).keys() ];;
for (i=0; i< files.length; i++) {
let file = 'done ' + i;
console.log(file); // Set a 1 sec timeout. Prints: 'done 1', then 1 second later 'done 2' and so on.
}
}
printFiles();

Поэтому, основываясь на приведенном выше примере, я должен видеть файлы, генерирующие один за другим, вместо того чтобы генерировать все сразу.

Благодарю.

спросил(а) 2018-09-20T08:18:00+03:00 1 год, 9 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема