Привет. Есть две функции, использующие async await:
function getAirportViaJson(code) {
return new Promise(resolve => {
$.getJSON('/json/airports.travelpayouts.json', function(data){
for(let i = 0; i < data.length; i++)
if(code == data[i].code)
resolve(data[i].name_translations.ru);
});
});
}
async function getAirportByCode(code) {
let airport = await getAirportViaJson(code);
return airport;
}
getAirportByCode('SVO');
Функция должна возвращать значение Шереметьево, исходя из его IATA-кода SVO, но почему-то возвращается [object Promise]. Почему?
Вы объявили async функцию. Это значит, что возвращает она promise.
Так как она находится на т.н. "верхнем уровне" необходимо promise обработать ручками, без await
И пожалуйста, не забывайте что в теле async функции должен присутствовать блок try...catch, иначе uncaught promise rejection вас ждет
function getAirportViaJson() {
return new Promise(resolve => {
resolve("123");
});
}
async function getAirportByCode(code) {
try {
let airport = await getAirportViaJson();
return airport;
} catch (err) {
console.log(err);
}
}
getAirportByCode('SVO')
.then(console.log) // function(res) {console.log(res)}
.catch(alert);
Код работает в последнем chrome.
Продвижение своими сайтами как стратегия роста и независимости