javascript - 为什么等待后我的代码行没有被调用?
问题描述
我对以下代码有疑问。firebase.login 返回一个 Promise,我了解到,当我之前输入“await”时,Javascript 会等到 Promise 交付,然后继续下一行。我
但是下一行似乎永远不会被触发。我究竟做错了什么?它也不会停留在“调试器”标记处。
try {
const user = await firebase.login(email, password);
console.log("l1: ", user);
debugger;
props.history.replace("/impressum");
} catch (error) {
alert(error.message);
}
}```
解决方案
调用返回Promise
的值firebase.login();
应该包含在一个async
函数中(我们无法从您的代码段中看到)。正如评论中提到的,它可能catch
会被触发,在这种情况下,您应该优雅地处理错误。
// mock the firebase login Promise
const firebase = {
async login(email, password) {
return {
email
};
}
};
(async() => {
try {
const [email, password] = [
'joe.bloggs@example.com',
'password123',
];
const user = await firebase.login(email, password);
console.log(user);
} catch (err) {
console.error(err);
}
})();
推荐阅读
- php - 递增/递减 $a++ 和 ++$a。有人可以帮我解释一下吗?
- django - 通过搜索页面搜索时找不到页面(404)错误引发者:blog.views.blogpost
- wpf - 无法让加速键与 WPF 单选按钮一起使用
- performance - 更快的 imagemagick 标题绘图
- android - 火力基地 | 如何获得所有子条目的总和
- reactjs - React Hook 使用服务器调用初始化状态
- javascript - Netlify 表单数据返回不连贯的字符串
- javascript - 如何在本机反应中自动隐藏和显示组件
- python - shap 中的错误 - AttributeError:模块“shap”没有属性“TreeExplainer”
- ios - 由于二进制文件中的这个错误 NSUserTrackingUsageDescription 键(App Store),我无法提交新版本