@Quintis

Как асинхронно передать данные с XMLHttpRequest?

Как передать значение c XMLHttpRequest запроса в переменную класса this.VideoUrl при асинхронности ?

class Test{
  constructor() {
    this.VideoUrl = "";
    this.url = "https"
  }
  getUrl(){
    let xhr = new XMLHttpRequest();

    xhr.open("GET", this.url, true);

    xhr.send();

    let transfer =(x)=>{
      this.urlToVideo = x;
    }

    function handler() {
      let VideoUrl = this.responseXML
      transfer(VideoUrl);
    }
    
    
    xhr.onload = handler;

  }
  log(){
    console.log(this.urlToVideo)
  }
}
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Quintis, Вот, чисто наугад, вы пытаетесь сделать что-то такое?
test.getUrl()
test.log()

Если да, то это не будет работать. Потому, что порядок выполнения следующий:
  1. Вызов getUrl
  2. Начало отправка запроса
  3. Назначение обработчика onload
  4. Вызов log
  5. Ожидание ...
  6. Возврат ответа от сервера
  7. Вызов transfer


Вам нужен механизм, чтобы вызывать log ПОСЛЕ возвращения запроса. Например promise или callback
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект