【发布时间】:2020-06-18 00:45:34
【问题描述】:
我有几个同步函数,其中一些不是我自己的代码。 这些函数在完成时接受并执行回调函数。
我需要等到这些回调完成后再退出应用程序。 我该如何执行?
const serverGracefulShutdown = () => {
logger.info('Signal received: Gracefully killing application');
httpServer.close(() => {
logger.info('Apollo server closed');
});
redis.quit(() => {
logger.info('Redis client closed');
});
stopKafkaConsumer(() => {
logger.info('Kafka consumer closed');
});
logger.info('Application closed');
process.exit(0);
};
process.on('SIGINT', serverGracefulShutdown);
process.on('SIGTERM', serverGracefulShutdown);
在上面的代码中,我想确保应用程序正常关闭。
所有正在运行的东西都停止了,然后我可以调用 process.exit(0)。
【问题讨论】:
-
Promsify 一切并使用
Promise.all()。否则,您必须实现某种计数器,然后在每个回调中,递减计数器并检查计数器是否已归零,表明所有回调现已完成。 -
出于某种原因,我认为我只能使用异步函数来实现 Promise。
标签: node.js asynchronous shutdown