Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Данные отображаются некорректно

иван савин Ученик (29), открыт 4 недели назад
   function r() { 
new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest()

xhr.open('GET', 'https://v6.exchangerate-api.com/v6/latest/')

xhr.responseType = 'json'
xhr.setRequestHeader('Content-Type', 'application/json')

xhr.onload = () => {
if (xhr.status >= 400) {
reject(xhr.response)
} else {
resolve(xhr.response.conversion_rates)
}
}

xhr.onerror = () => {
reject(xhr.response)
}

xhr.send(JSON.stringify(null))
})
.then(data => {
console.log(data)
return data;
})
}
console.log(r())
Почему результатом нижнего Console.log является undefined? Данные с сервера приходят как надо.
1 ответ
Андрей Высший разум (435056) 4 недели назад
Потому, что в коде функции r не существует return, возвращающего какое-то осмысленное значение. А раз r возвращает "ничего", то и console.log это самое "ничего" и печатает. И то, что ты написал return внутри промиса, не имеет к возврату значения из r никакого отношения.

Вместо return data; должен стоять код, который эту data обрабатывает. НЕ возвращает через return, а здесь и сейчас что-то делает.
Похожие вопросы