Периодически мне приходится писать консольные приложения node.js, которые должны запускаться непосредственно из оболочки. Они не принимают ввод, они будут вызывать файловую систему, выполнять вызовы базы данных и другие действия асинхронного типа. Существует множество примеров того, как настроить приложения node.js, которые размещают сервер и тому подобное, но для чего-то, что вызывает асинхронный процесс, ожидает его и затем завершает работу после установки кода выхода. Мне трудно найти то, что я хотел бы рассмотреть изящные примеры.
Вот фрагмент того, как я сейчас к этому обращаюсь. У любого гуру node.js есть более чистые способы, или это в основном "хорошо"?
const emitter = new EventEmitter();
emitter.on('exit', (err) => {
if(err) {
console.error(err instanceof Error ? err.message : err);
process.exit(-1);
} else {
process.exit(0);
}
});
setImmediate(async () => {
try {
await doSomeAsyncThing();
emitter.emit('exit', null);
} catch(e) {
emitter.emit('exit', e);
}
});