如何使用JavaScript更改待办事项应用程序的顺序?

我正在使用JavaScript编写“待办事项”应用程序,并且想创建一个HttpRequest。它无法正常工作,因为我可以在控制台的最后看到数据,因此我的GET请求无法正常工作。如何在程序结束时将它们切换为具有GET请求?

这是数据响应:

let url = 'here is my url';
let xhr = new XMLHttpRequest();
xhr.onloadend = (event) => {
            return xhr.result;
};

我这样设置标题:

setHeader() {
        xhr.setRequestHeader('Content-Type','application/json');
}

我的get函数如下:

get(async,header) {
    return new Promise((resolve,reject) => {
        xhr.open('GET',url,async);
        xhr.setRequestHeader(header.name,header.value);
        xhr.send();
        resolve(xhr.response);
    });
}

我必须使用HttpClient和JavaScript,不能使用jQuery或其他任何东西。

wgbmuziyo 回答:如何使用JavaScript更改待办事项应用程序的顺序?

请在构造函数中绑定getAll函数,或者您可以使用箭头函数

export class HttpClient {
  constructor(url) {
    this.url = url;
    this.xhr = new XMLHttpRequest();
    this.xhr.onloadend = event => {
      console.log("ONLOADEND",this.xhr.response);
      return this.xhr.result;
    };

    this.setHeader = this.setHeader.bind(this);
    this.get = this.get.bind(this);
    this.post = this.post.bind(this);
  }

  setHeader() {
    this.xhr.setRequestHeader("Content-Type","application/json");
  }

  get(async,header) {
    return new Promise((resolve,reject) => {
      this.xhr.open("GET",this.url,async);
      this.xhr.setRequestHeader(header.name,header.value);
      this.xhr.send();
      console.log("xhr",this.xhr.response);
      resolve(this.xhr.response);
      // return nothing
    });
  }

  post(async,data,reject) => {
      this.xhr.open("POST",this.url + "create",async);
      this.setHeader(header);
      this.xhr.send(data);
      console.log("RESPONSE",this.xhr.response);
      resolve(this.xhr.response);
    });
  }
}

export class TodoList extends HttpClient {
  constructor() {
    super("http://todoapp.test/api/");
    this.items = [];
    this.header = new Headers();
    this.header.set("Accept-Encoding","application/json");

    this.add = this.add.bind(this);
    this.getAll = this.getAll.bind(this);
  }

  add(todo) {
    this.post(true,JSON.stringify(todo),this.header);
    this.items.push(todo);
  }

  getAll() {
    this.get(true,this.header).then(result => {
      const data = !!result ? result : "[]";
      const items = JSON.parse(data);
      console.log("result:",result);
      items.forEach(item => {
        const todo = new Todo(item.id,item.name,item.status);
        this.items.push(todo);
      });
      console.log("items block:",this.items);
    });
  }
}
本文链接:https://www.f2er.com/3059385.html

大家都在问