Javascript - выполнение операций в фоновом режиме

159
13 сентября 2017, 11:04

Делаю HTML страницу, нужно сделать так, чтобы продолжительные операции (типа http-запроса) выполнялись в фоновом режиме и не заставляли интерфейс подвисать. Например, выполнить такой код:

            var xhr = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
            var client = new xhr();
            client.open('GET', url, false);
            client.send();

чтобы при этом графический интерфейс не зависал до тех пор, пока операция не выполнится?

Answer 1

Нут так и запускайте в асинхронном режиме

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();
Answer 2

Используйте 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}`)
    );
READ ALSO
InlineKeyboardMarkup telegram

InlineKeyboardMarkup telegram

Помогите составить InlineKeyboardMarkup

221
как сделать выбор между способами ввода?

как сделать выбор между способами ввода?

ЗдравствуйтеУ меня есть 3 способа ввода (рандомный по возрастанию, по спаданию и просто рандомный), как мне сделать, чтобы я мог выбирать между...

226
Клиент, который находит нужные сервисы

Клиент, который находит нужные сервисы

Как создаются клиенты, которые могут опросить сеть и найти нужные экземпляры служб?

206
Создание экземпляра обобщенного типа C#

Создание экземпляра обобщенного типа C#

Есть метод со следующей сигнатурой:

245