Делаю HTML страницу, нужно сделать так, чтобы продолжительные операции (типа http-запроса) выполнялись в фоновом режиме и не заставляли интерфейс подвисать. Например, выполнить такой код:
var xhr = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
var client = new xhr();
client.open('GET', url, false);
client.send();
чтобы при этом графический интерфейс не зависал до тех пор, пока операция не выполнится?
Нут так и запускайте в асинхронном режиме
var xhr = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
var client = new xhr();
client.open('GET', url, true);
// Определяем обработчик
client.onreadystatechange = function() {
if (this.readyState == 4) {
// Обработка результатов
}
};
client.send();
Используйте promise, например:
function httpGet(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onload = function() {
if (this.status == 200) {
resolve(this.response);
} else {
var error = new Error(this.statusText);
error.code = this.status;
reject(error);
}
};
xhr.onerror = function() {
reject(new Error("Network Error"));
};
xhr.send();
});
}
httpGet("someURL")
.then(
response => alert(`Fulfilled: ${response}`),
error => alert(`Rejected: ${error}`)
);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
ЗдравствуйтеУ меня есть 3 способа ввода (рандомный по возрастанию, по спаданию и просто рандомный), как мне сделать, чтобы я мог выбирать между...
Как создаются клиенты, которые могут опросить сеть и найти нужные экземпляры служб?