0

// Функция загружает требуемый XML файл в синхронном режиме

function loadXML(url){
    var reqMessage = getXmlHttpRequest();
    reqMessage.open("GET", url, false);
    reqMessage.send(null);

    return reqMessage.responseXML;
}

Она работает только в консоле весит предупреждение :

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check

Надо делать в место этого так

Вот так делать не надо:

var xhr = new XMLHttpRequest();
xhr.open("GET", "/query", /*async*/ false); // async=false
xhr.send(null);
if (xhr.status == 200) {
    console.log(xhr.responseText);
}
Вместо этого следует использовать колбэки:

var xhr = new XMLHttpRequest();
xhr.open("GET", "/query"); // async=true
xhr.onload = function (e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
        console.log(xhr.responseText);
    }
};
xhr.send(null);

Подскажите пожалуйста, как переписать первую функцию что бы она загружала файл и остальной скрипт ждал пока эта функция не вернет результат?

Юра
  • 1
  • и остальной скрипт ждал - Ждать будет весь браузер - javascript однопоточный. Освойте ассинхронные методы. – vp_arth Feb 14 '17 at 14:40
  • Есть ещё async/await из черновика ES2017. –  Feb 14 '17 at 14:41
  • так у меня эта функция вложена в другой ajax запрос ( асинхронный ) – Юра Feb 14 '17 at 14:46

0 Answers0