@Romeo4755

Синхронные запросы на JS XMLHttpRequest — как теперь его осуществлять?

Скажите, как в 2020 году осуществить задачу синхронного запроса XMLHttpRequest.
То есть надо остановить выполнение сценария до ответа с сервера (или вообще его закончить, если ответ не придет в течение, например, минуты).
Асинхронные запросы уродуют логику программы - приходится вызывать следующее действие не из четкого списка последовательных действий, а из функций, раскиданных по разным скриптам. Хочется иметь возможность выполнить именно синхронный запрос - но о нем так много негативной информации за разное время, что непонятно, что можно делать на сегодняшний момент, что нельзя.
Например, у меня не срабатывает такой код. Почему - не знаю, то ли у меня ошибка, то ли так уже нельзя.
var request = new XMLHttpRequest();
 request.open('POST', 'baseindex_numberoflines.php');// from sellers
 request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("nameoftable="+atabname);
if(request.status == 200) {
    newdata = request.responseText;
  	document.getElementById ("newinfo").innerHTML = newdata;
}
  • Вопрос задан
  • 858 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Che603000
c 2011 javascript
Скажите, как в 2020 году осуществить задачу синхронного запроса .

в 2020 году не стоит использовать XMLHttpRequest используйте window.fetch
https://learn.javascript.ru/fetch

Асинхронные запросы уродуют логику программы

В js асинхронность это норма. Для упрощения кода можно использовать Promise
https://learn.javascript.ru/promise

Для примера псевдокод ниже
fetch('baseindex_numberoflines.php', {method: 'post' , body: {id: '735474'}})
    .then(newdata=> { 
        // блок 1 - выполнится после успешного запроса
       document.getElementById ("newinfo").innerHTML = newdata );
       return "test"
    })
    .then(test=> { 
        // выполнится после блок 1
    })
    .catch(err=>{
      // блок выполнится после ошибки
    }
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы