为什么执行完一个函数就结束了,没有任何错误?
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 尚未完成的原因...
我以为进程卡住了等待解决。 但它返回“你好,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 尚未完成的原因...