Откройте консоль и выполните:
async function getIp(){
// Блок try выполнится полностью, если не будет ошибок:
try {
// Выполняем первый запрос:
var response1 = await (await fetch('https://json.geoiplookup.io/')).json();
// Выполняем второй запрос используя данные с первого:
var response2 = await (await fetch('https://ipapi.co/'+response1.ip+'/json/')).json();
return response2; // Возвращаем результат второго запроса
}
// Блок catch сработает только если будут какие-то ошибки в блоке try:
catch(err) {
// Выведем в консоли информацию об ошибке:
console.log('При запросе IP произошла ошибка, детали ниже:');
console.error(err);
// Вернем исключение с текстом поясняющим детали ошибки:
throw new Error('Один из запросов завершился неудачно =(');
}
}
// Вызовем функцию:
var info = await getIp();
// Выведем результат:
console.log('Результаты запроса IP ниже:');
console.dir(info);
Код раскомментирован, думаю все понятно. Отдельно замечу, что если вы будете вызывать
await getIp();
не в консоли, а где-то внутри другой функции, то эта функция обязательна должна иметь приставку
async, иначе получите ошибку. Например, вам надо вызывать эту функцию внутри функции
test()
тогда не забудьте к ней добавить
async:
async function test() {
// ... ваш код
var info = await getIp();
// ... ваш код
}
Учебник:
https://learn.javascript.ru/async-await