首页 > 解决方案 > 为什么执行一个函数后进程没有任何错误就结束了?

问题描述

我认为该过程被卡住等待解决。但它返回“Hello,A”并退出进程。

我不明白为什么它刚刚退出。

我知道如果我只是添加解决或拒绝它就会解决。

但我想要一些深刻的东西。

function funA(name) {
  return new Promise(function(resolve, reject) {
    console.log("Hello, " + name);
  });
}

(async() => {
  await funA("A");
  await funA("B");
})();

// Hello, A
// exit

VScode 图像


解决

当 Promise 永远不会解决时会发生什么?

标签: javascriptnode.jsasync-awaites6-promise

解决方案


确保解决你的承诺,否则它仍然会等待 FunA("A") 完成。你可以通过调用来做到这一点resolve()

function funA(name) {
  return new Promise(function (resolve, reject) {
    console.log("Hello, " + name);
    resolve();
  });
}

(async () => {
  await funA("A");
  await funA("B");
})();

编辑:回答您的问题,如果您不解决,它为什么会退出并且不会挂起:当nodejs 没有更多回调要处理时,就会发生这种情况。当您返回未解决的未决承诺时,您尚未在 nodejs 队列中创建回调,因此 nodejs 决定退出


推荐阅读