Мое решение для ожидания, пока все части не будут прочитаны:
const multipartParser = new Form();
multipartParser.on('error', error => { /* do something sensible */ });
const partLatches: Latch<void, Error>[] = [];
multipartParser.on('part', async part => {
// Latch must be created and pushed *before* any async/await activity!
const partLatch = createLatch();
partLatches.push(partLatch);
const bodyPart = await readPart(part);
// do something with the body part
partLatch.resolve();
});
const bodyLatch = createLatch();
multipartParser.on('close', () => {
logger.debug('Done parsing whole body');
bodyLatch.resolve();
});
multipartParser.parse(req);
await bodyLatch;
await Promise.all(partLatches.map(latch => latch.promise));
Это может быть удобно в тех случаях, когда вы хотите обрабатывать детали дальше, например, анализировать и проверять их, возможно, хранить их вбазы данных.