Наконец, это можно возобновить в такой функции, как эта
fetch('http://ip-api.com/json')
.then((r) => r.json())
.then((d) => console.log(d.countryCode));
Конечно, вопрос был о том, как вернуть строку, а не просто записать ответ.
Однако, если мы найдем способ связать асинхронный вызов, это будет лучшим ответом и производительностью. Теперь, если мы хотим синхронного возврата с блокировкой потока ... Я никогда не нашел ответа на этот вопрос ... вероятно, все будут пытаться убедить остаться только с первым решением ...
Например. Вы можете связывать звонки, чтобы получить желаемый результат. Скажем, вам нужно получить код страны ISO3 из кода страны ISO2 первого звонка. Чтобы использовать второй API для кода страны ISO3, вам может потребоваться сделать следующее:
fetch('http://ip-api.com/json')
.then((j1)=>j1.json()) // get iso2 country code
.then((iso2)=>fetch('http://country.io/iso3.json')
.then((j2)=>j2.json()) // get iso3 code
.then((iso3)=>console.log(iso3[iso2.countryCode]))); // combine 1st result & 2nd