为什么执行完一个函数就结束了,没有任何错误?

Why does the process end after executing a one function without any errors?

我以为进程卡住了等待解决。 但它返回“你好,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 Image


解决

一定要解决你的承诺,否则它仍然会等待 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 处理时会发生这种情况。当你 return 你的未决承诺没有解决时,你还没有在 nodejs 队列中创建回调,因此 nodejs 决定退出

从本质上讲,您的函数调用已经陷入困境...它们还没有退出...

甚至节点控制台显示一条消息...

Hello, A
Promise { <pending> }

另请注意,这是第一个调用本身,它已经进入了不确定状态。第二个甚至还没有开始...第一个“等待”本身还没有完成执行...这意味着,尽管您的函数看起来 运行 已完成,但它正在执行的“Promise”尚未完成...这就是 await 尚未完成的原因...