首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回调与异步回调

回调与异步回调
EN

Stack Overflow用户
提问于 2021-01-05 13:03:49
回答 1查看 66关注 0票数 0

我有下面的代码,在node.js应用程序中实现SIGINTSIGTERM信号处理。

代码语言:javascript
复制
// 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,则如下所示。

代码语言:javascript
复制
// quit properly on docker stop
    process.on('SIGTERM', () => {
      console.log('Got SIGTERM (docker container stop).Graceful shutdown', new Date().toISOString());
      gracefulShutdown(server);
    });

这个普通回调和上面的异步回调在执行顺序或执行上有什么不同?

两者是不同还是相同?

这是gracefulShutdown()处理程序

代码语言:javascript
复制
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);
  }
};
EN

回答 1

Stack Overflow用户

发布于 2021-01-05 13:08:03

async函数将立即开始执行,直到命中第一个await语句或结束时为止。

因此,如果您只是调用console.loggracefulShutdown,那么这两个函数的执行顺序都是相同的。

两者在如何处理错误、返回什么方面会有所不同,但我不认为这对这种情况有什么影响。

我建议在每种情况下,如果gracefulShutdown会抛出错误,就对它进行一些错误处理

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65573523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档