Как вернуть результат асинхронного запроса?

Пытаюсь переписать с jquery на простой js скрипт. Есть у меня такой код:

var test = postAjax(url, data);
console.log(test);


и собственно сама отправка запроса:
function postAjax (url, data) {  
    return new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', url, true);
        xhr.responseType = 'json';
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
        xhr.send(JSON.stringify(data));

        xhr.onload = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                resolve(xhr.response);
            }
        };
    }).then(
        response => {
            console.log(response);
            return response;
        }
    );
}


Мне нужно, чтобы postAjax возвращал результат запроса в test.
Я смотрю эту статью - https://learn.javascript.ru/promise - но не могу понять что нужно сделать.
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
советую еще переписать с xhr на fetch
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Используйте await:
var test = await postAjax(url, data);
console.log(test);

Если вы этот код будете использовать не в консоли, а где-то в своем коде внутри какой-нибудь функции, то добавьте к этой функции приставку async, чтобы не было ошибки.
Ответ написан
Ваш ответ на вопрос

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

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