@nats1k666

Promise как в .then получить ответ GET запроса?

Здравствуйте. Изучаю JS
как в .then получить ответ GET запроса?
let inputRub = document.getElementById('rub'),
    inputUsd = document.getElementById('usd');



inputRub.addEventListener('input', () => {
    function postData(url){
        return new Promise(function(resolve,reject){
            let request = new XMLHttpRequest();
            request.open('GET', url);
            request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
            request.addEventListener('readystatechange', function() {
                if (request.readyState === 4 && request.status == 200) {
                    resolve();
                } else { reject();
                }
            });
            request.send();
         });
         

    };
    postData('/js/current.json')
    .catch(()=>{
        let data = JSON.parse(request.response);
        console.log(data);
    })
    

});
  • Вопрос задан
  • 745 просмотров
Решения вопроса 2
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
let inputRub = document.getElementById('rub'),
    inputUsd = document.getElementById('usd');



inputRub.addEventListener('input', () => {
    function postData(url){
        return new Promise(function(resolve,reject){
            let request = new XMLHttpRequest();
            request.open('GET', url);
            request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
            request.addEventListener('readystatechange', function() {
                if (request.readyState === 4 && request.status == 200) {
                    resolve(request.response);
                } else {
                    reject();
                }
            });
            request.send();
         });
         

    };
    postData('/js/current.json')
    .then((response)=>{
        let data = JSON.parse(response);
        console.log(data);
    })
});

В resolve нужно передать ответ сервера, а уже потом в then можно будет этот ответ получить и обработать.
И вы используете .catch, а не .then. В catch падают ошибки, которые произошли до того, как будет then. Т.е. когда вы вызываете reject();
Ответ написан
@StockholmSyndrome
if (request.readyState === 4 && request.status == 200) {
  resolve(request.response);
}

postData('/js/current.json')
  .then((res) => {
    let data = JSON.parse(res);
    console.log(data);
  })
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы