javascript - 通过在构造函数中获取来分配属性
问题描述
我是 JavaScript 的初学者,所以请原谅我缺乏知识。
我想分两步使用自定义 JavaScript 类的属性初始化一个对象。
第一:根据构造函数中的参数初始化一些属性
class Test {
constructor(a, b, url) {
this.a = a;
this.b = b;
this.url = url;
}
第二:请求url并将响应数据分配给更多属性
class Test {
constructor(url, a, b) {
this.a = a;
this.b = b;
this.url = url;
fetch(this.url)
.then(response => response.json())
.then((data) => {
this.dataA = data;
this.dataB = data.b;
this.dataC = data.c;
})
}
}
不知何故,无法从外部访问在 fetch 函数期间初始化的属性。例如,如果我调用构造函数中的属性,我只会收到一个未定义的对象。
class Test {
constructor(url, a, b) {
this.a = a;
this.b = b;
this.url = url;
fetch(this.url)
.then(response => response.json())
.then((data) => {
this.dataA = data;
this.dataB = data.b;
this.dataC = data.c;
console.log(this.dataA, this.dataB, this.dataC) // data accessible
})
console.log(this.dataA, this.dataB, this.dataC)// data undefined
}
}
任何人都有一个想法,为什么会这样?也许是因为请求是异步的?另外,我真的不确定,如果通常在构造函数中发出请求是正常的。你怎么看?
提前致谢!
解决方案
推荐阅读
- javascript - 我可以在页面脚本之前先设置 content.js 吗?Chrome 扩展程序
- javascript - Angular 12 - 双向数据绑定和触发器
- sharepoint-2013 - 在 sharepoint 中创建文档集时出错
- slurm - OpenMP 的多线程问题
- openapi-generator - openapi-generator-cli typescript-axios 只获取 response.data
- linux - 用于自动压缩不同子文件夹并将压缩文件存储到具有日期名称的特殊文件夹中的 Bash 脚本
- google-oauth - 使用应用程序验证 Google OAuth2 音乐会屏幕仅供个人使用
- python - 查找二叉树的深度 - 存储/更新的深度在哪里?
- git - 使用 git-filter-repo 重写后如何推送到原始远程存储库
- flutter - 如何使用 dart-flutter 每天重复本地通知?以及如何将“2:00 AM”时间格式解析为 TimeZone?