Как получить доступ к методу класса в XMLHttpRequest? - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть класс javascript для управления вызовами API (здесь TimelinesManager), и мне нужно вызвать метод моего менеджера (того же класса, с именем arrayToObject) внутри XMLHttpRequest.onload.

Я пыталсяполучить доступ к нему с помощью this.arrayToObject () и TimelinesManager.arrayToObject (), но я получаю сообщение об ошибке, означающее, что это не функция (TypeError: this.arrayToObject не является функцией).

class TimelinesManager {

  getTrends(access_token, start, limit, callback) {
    // Create a request to API
    var request = new XMLHttpRequest();
    request.open('GET', 'https://api.extopy.com/timeline/trends.php', true);
    request.onload = function () {
      var data = JSON.parse(this.response);
      if (request.status == 200) {
        // Here I try to access to my class method
        callback(this.arrayToObject(data));
      }
    };
    request.send();
  }

  // The method I want to call
  arrayToObject(data) {
    // Here I proceed my data
  }

}

Как получить доступк этому методу класса?

1 Ответ

0 голосов
/ 31 декабря 2018

Попробуй это.Нам нужно захватить это в переменную.Как внутри запроса this относится к запросу

class TimelinesManager {

  getTrends(access_token, start, limit, callback) {
    // Create a request to API
  
    let self = this;
    var request = new XMLHttpRequest();
    request.open('GET', 'https://api.extopy.com/timeline/trends.php', true);
    request.onload = function () {
      var data = JSON.parse(this.response);
      if (request.status == 200) {
        // Here I try to access to my class method
        callback(self.arrayToObject(data));
      }
    };
    request.send();
  }

  // The method I want to call
  arrayToObject(data) {
    // Here I proceed my data
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...