javascript - 访问和更新对象
问题描述
我在访问对象时遇到问题,我尝试定义 alet
并向其写入一个新对象,但是当我尝试访问它时,这是不可能的,这就是我的尝试的样子:
function Player(uniqueId, name, figureString, motto, memberSince) {
this.uniqueId = uniqueId;
this.name = name;
this.figureString = figureString;
this.motto = motto;
this.memberSince = memberSince;
}
...
let player;
getUser
.then((res) => {
player = new Player(res.uniqueId, res.name, res.figureString, res.motto, res.memberSince);
})
.catch(() => {
...
});
// Trying to access player here
console.log(player.name + player.figureString);
解决方案
就像其他人说的那样,问题在于console.log(...)
异步代码。console.log()
因此调用时未定义播放器。为避免这种情况,您可以使用async/await
.
function Player(id, name) {
this.name = name;
this.id = id;
}
const getUser = () => {
return new Promise((resolve, reject) => {
return resolve({ name: "Karl", id: 1 });
});
}
(async () => {
try {
const { name, id } = await getUser();
const player = new Player(id, name);
console.log(`id: ${player.id}, name: ${player.name}`);
} catch (err) {
//handle error
}
})();
并不是说我添加了 getUser 存根和简化示例以仅使用name
和id
. 最后你可以看到 IIFE,因为要使用await
关键字,它必须放在async
函数内部。这样您就可以确定播放器已定义。
推荐阅读
- excel - 我可以使用什么 Excel 公式将具有唯一数据和重叠数据的重复条目合并到一个行项目中?
- javascript - 测试具有多个连续页面的 webapp 时出错
- python-3.x - 如何在字典列表中解析来自api的值(迭代)python
- python - 如何在 Python 中压缩数组但保留其余部分?
- reactjs - RMWC 选择组件不会显示选择的值
- c# - Xamarin Forms ListView 在不导航到新页面的情况下不更新
- ios - 快速绘制 LineGraph 并出现意外错误
- amazon-web-services - AWS CloudFront err_too_many_redirects
- python - 当键很奇怪时将列表映射到字典
- c# - 如何在 asp.net mvc 中使用 3 个数组获取 json 数据