Реализация Promise

Всем привет. Вопрос такой, начал изучать promise интуитивно понимаю как он работает, много примеров есть, но ни где, не мог найти пример, что бы в него(promise) предавали let. Подскажите кто знает, как поступать если у тебя в теле цикла есть let.Если предаешь в .then(let data = JSON.parse(request.response)) ругается что не хватает скобки, и конвертер валют не работает ;(((

 let inputRub = document.getElementById('rub'),
 inputUsd = document.getElementById('usd');

 inputRub.addEventListener('input', () => {
     function getMoney (){
         return new Promise (function (resolve, reject) {
             let request = new XMLHttpRequest();

             request.open('GET', 'js/current.json');
             request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
             request.send();

             request.addEventListener('readystatechange', function() {
                 if (request.readyState === 4 && request.status == 200) {
                     let data = JSON.parse(request.response);
                     resolve();
                     // inputUsd.value = inputRub.value / data.usd;
                 } else {
                     reject();
                     // inputUsd.value = "Что-то пошло не так!";
                 }

       }); 


    });

 };
    getMoney()
        .then (()=> inputUsd.value = inputRub.value / data.usd)
        .catch (()=> inputUsd.value = "Что-то пошло не так!")
 });

Ответы (1 шт):

Автор решения: ThisMan

Раз используете promise, посмотрите в сторонуfetch. Он легче и из коробки использует promise

Пример, как пользоваться

fetch(url)
  .then(data => data.json())
  .then(data => { /** делаем что-то тут */ })
  .catch(error => { /** ... */ });

Так же, если по какой-то причине fetch не подходит, вы можете передать в resolve какие-то данные, тогда они попадут в then

request.addEventListener('readystatechange', function() {
    if (request.readyState === 4 && request.status == 200) {
        let data = JSON.parse(request.response);
        resolve(data); // передали data в resolve
    } else {
        reject();
    }
});


// далее где-то в коде
getMoney()
    .then ((data)=> inputUsd.value = inputRub.value / data.usd)
    .catch (()=> inputUsd.value = "Что-то пошло не так!")
→ Ссылка