javascript - 为什么执行一个函数后进程没有任何错误就结束了?
问题描述
我认为该过程被卡住等待解决。但它返回“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
解决
解决方案
确保解决你的承诺,否则它仍然会等待 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 决定退出
推荐阅读
- react-native - 反应原生平面列表分页启用删除问题
- css - safari 自动建议的样式密码
- java - 不受支持的 JavaFX 配置:类是从“未命名模块 @...”加载的
- c# - 一对扑克牌 C# 的 GetHashCode
- java - Andriod Studio“受信任的证书条目不受密码保护”
- ip-address - 更改 IP 地址后无法通过浏览器访问 Bitnami Stack LimeSurvey 应用程序(托管在 AWS ec2 实例上)
- reactjs - 如何在 reactJS 中添加对 twitch 视频播放器的响应能力
- python - cx_Oracle.DatabaseError: DPI-1047: 找不到 64 位 Oracle 客户端库 oracle 10
- python - 如何告诉 SQLAlchemy 变量“x”中的类型
- javascript - innerHTML 如何在顶部创建新的表格行