3

у меня есть запрос примерно такого характера:

var x = new XMLHttpRequest();

x.open("GET", "тут ссылка на сайт", false);

x.send();

if (x.status != 200) { // обработать ошибку alert( x.status + ': ' + x.statusText ); // пример вывода: 404: Not Found } else { let r = JSON.parse(x.response) }

Если я во 2 строке, передаю 3-им параметром true (то есть делаю асинхронным запрос), то у меня идет status=0, readyState = 1, с чем это может быть связано? При Синхронном запросе, все приходит и работает

  • 3
    Вам нужно разобраться с асинхронностью и как она работает в XHR. См. https://learn.javascript.ru/xmlhttprequest , https://ru.stackoverflow.com/questions/554290/ , https://learn.javascript.ru/async – vsemozhebuty Oct 10 '20 at 12:42
  • 2
    все, понял, спасибо вам большое – Random chel Oct 10 '20 at 13:02

1 Answers1

2

Чтобы асинхронный код был похож на синхронный нужно делать как-то так:

/* Код полностью рабочий.
   Можно вставить в консоль находясь на любом сайте. */
(async()=>{
  const response = await fetch('/',{method:'GET'});
  const mainPage = await response.text();
  console.log(mainPage);

/* Потом можно, например, распарсить это хозяйство */ const parsedMain = (new DOMParser()).parseFromString(mainPage,'text/html'); const mainTitle = parsedMain.querySelector('head title'); console.log(mainTitle.innerHTML); })();

DiD
  • 7,606