gpt4 book ai didi

javascript - 在 javascript 中的另一个类中使用时,来自 GET 请求的数据不存在

转载 作者:行者123 更新时间:2023-12-03 03:03:27 24 4
gpt4 key购买 nike

我有一个函数可以发出这样的 GET 请求。

export class OneClass {
constructor() {
this.data = [];

getData() {
let xhr = new XMLHttpRequest();
xhr.open('GET', '/data.json', true);
xhr.onreadystatechange = () => {
* push response to this.data *
};
xhr.send();
}
}

之后我想在另一个类中使用this.data,在DOMContentLoad上创建AnotherClass

var oneClass = new OneClass();

class AnotherClass {
constructor() {
oneClass.getData();
this.anotherClassMethod()
}
anotherClassMethod() {
* use oneClass.data *
}
}

这个想法是,anotherClassMethod()应该在页面加载后立即输出oneClass.data,但现在调用它时数组仍然是空的。

我知道我的方法运行得比数据创建要早,这就是原因,但我不确定要更改什么才能使此代码正常工作。

最佳答案

您是否检查响应是否有效?如果是这样,为什么不使用标准的回调方式呢?我没有看到你实现它:

export class OneClass{
constructor() {
this.data = [];

getData(callback) {
let xhr = new XMLHttpRequest();
xhr.open('GET', '/data.json', true);
xhr.onreadystatechange = (response) => {
callback(response);
};
xhr.send();
}
}

前一个使用参数创建您的类,以便在完成后返回到他的调用堆栈。然后,让我们等待响应并操作数据:

var oneClass= new OneClass();

class AnotherClass{
constructor() {
oneClass.getData(this.anotherClassMethod);

}
anotherClassMethod(data){
*use oneClass.data*
}
}

有关 Callbacks 的更多信息

关于javascript - 在 javascript 中的另一个类中使用时,来自 GET 请求的数据不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47273116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com