Не получается записать в переменную страну
Я хочу записать в переменную страну пользователя, а потом ее использовать вне функции. Я пробовал использовать async и await, но не получается.
var country;
$.get("https://ipinfo.io", function(response) {
console.log(response.country); // RU
country = response.country;
}, "jsonp");
console.log(country); // undefined
Как я понял, оно делает запрос и сразу идет к console.log, а при ответе запроса присваивает значение. Как мне сделать, чтобы оно выполнялось последовательно?
Ответы (1 шт):
Автор решения: Pavel Grishaev
→ Ссылка
В таком синхронном виде как вы пишете, сделать это не получится.
Вот пример на async/await:
async function makeRequest(){
let country = await new Promise( resolve => {
$.get("https://ipinfo.io", response => {
resolve( response.country );
}, "jsonp");
});
console.log(country);
}
makeRequest();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Или так:
(async ()=>{
let country = await new Promise( resolve => {
$.get("https://ipinfo.io", response => {
resolve( response.country );
}, "jsonp");
});
console.log(country);
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>