我有一个像这样发出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
,AnotherClass
上创建了DOMContentLoad
var oneClass = new OneClass();
class AnotherClass {
constructor() {
oneClass.getData();
this.anotherClassMethod()
}
anotherClassMethod() {
* use oneClass.data *
}
}
这个想法是anotherClassMethod()
一旦加载页面就应该输出oneClass.data
,但现在当它被调用时,数组仍然是空的。
我知道我的方法比数据创建的运行得更快,这就是它的原因,但我不知道要改变什么来使这段代码有效。
答案 0 :(得分:1)
您是否检查回复是否有效?如果是这样,为什么不使用标准的回调方式?我没有看到你实施它:
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();
}
}
前一个创建了一个带有paremeter的类,用于在完成后返回其调用堆栈。 然后,让我们等待响应并操纵数据:
var oneClass= new OneClass();
class AnotherClass{
constructor() {
oneClass.getData(this.anotherClassMethod);
}
anotherClassMethod(data){
*use oneClass.data*
}
}
的更多信息