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

时间:2017-11-13 20:36:20

标签: javascript

我有一个像这样发出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.dataAnotherClass上创建了DOMContentLoad

var oneClass = new OneClass();

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

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

我知道我的方法比数据创建的运行得更快,这就是它的原因,但我不知道要改变什么来使这段代码有效。

1 个答案:

答案 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*
 }
}

有关Callbacks

的更多信息