javascript - 回调与异步回调
问题描述
我有以下代码,它在 node.js 应用程序中实现SIGINT
和信号处理。SIGTERM
// quit on ctrl+c when running docker in terminal
process.on('SIGINT', async () => {
console.info('Got SIGINT (aka ctrl+c in docker). Graceful shutdown', new Date().toISOString());
await gracefulShutdown(server);
});
// quit properly on docker stop
process.on('SIGTERM', async () => {
console.log('Got SIGTERM (docker container stop).Graceful shutdown', new Date().toISOString());
await gracefulShutdown(server);
});
在这两种情况下,我都传递了一个async
关闭应用程序的回调函数。
如果选择不在await
回调中执行,则如下所示。
// quit properly on docker stop
process.on('SIGTERM', () => {
console.log('Got SIGTERM (docker container stop).Graceful shutdown', new Date().toISOString());
gracefulShutdown(server);
});
关于执行顺序或一般执行,这个正常回调和上面的异步回调有什么区别?
两者不同还是相同?
这是gracefulShutdown()
处理程序
const { sequelize } = require('../models');
module.exports = async (server) => {
try {
await sequelize.close();
console.info('Closed database connection!');
await server.close();
process.exit();
} catch (error) {
console.info(error.message);
process.exit(1);
}
};
解决方案
async
函数将立即开始执行,直到它们到达第一await
条语句或结束时。
因此,假设您只是调用console.log
and gracefulShutdown
,则两者都以相同的顺序执行。
两者在如何处理错误、返回什么方面会有所不同,但我认为这对这种情况没有影响。
我建议您在每种情况下都进行一些错误处理,gracefulShutdown
如果它会引发错误
推荐阅读
- sql - 需要帮助以根据时间戳从 oracle DB 中获取行
- java - PowerShell 和 Jar 执行
- stata - 循环遍历许多没有规则的名称
- r - 在ggplot2中绘制图例
- javascript - 简单的 Javascript 代码在 Windows Vista 中不起作用
- mysql - MySQL 上的 Django QuerySet 过滤器无法正确显示
- c++ - 加减法十六进制计算器
- macos - 如何在 Xamarin.Forms MacOs 中更改 ActivityIndicator 的颜色?
- javascript - 使用此 .charAt() 的任何替代方式?
- php - PHP file_exists 方法未按预期工作