axios 在node.js进程退出时发送GET请求

lkaoscv7  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(186)

我想在退出进程之前使用GET请求发送一条电报消息。
我尝试了多种组合,但都不起作用。

process.stdin.resume();

function onExit () {
  axios.get(`https://api.telegram.org/bot${config.telegram.BOT}/sendMessage`, {
    params: {
      chat_id: config.telegram.USER,
      parse_mode: 'markdown',
      text: 'message'
    }
  })
  console.log('Exiting...')
  process.exit()
}

['exit', 'SIGINT', 'SIGUSR1', 'SIGUSR2', 'uncaughtException', 'SIGTERM'].forEach((eventType) => {
  process.on(eventType, onExit.bind(null, eventType));
})

它忽略了axios请求。我在这里做错了什么?我知道它应该是同步的,但是我在这里没有使用任何async/await。
它显示控制台日志“正在退出...”,但仅此而已

mxg2im7a

mxg2im7a1#

发生这种情况是因为axios.get是异步的,并返回一个承诺。

function onExit () {
  axios.get(`https://api.telegram.org/bot${config.telegram.BOT}/sendMessage`, {
    params: {
      chat_id: config.telegram.USER,
      parse_mode: 'markdown',
      text: 'message'
    }
  })
  .then(_=>process.exit(),_=>process.exit());

  console.log('Exiting...')
}

相关问题