Voici la fonction:
const getUserIP = async () => {
let response = await fetch('https://jsonip.com/');
let json = await response.json();
console.log(json.ip)
return json.ip;
};
Dans la console, l'adresse IP est enregistrée comme prévu. Cependant, lorsque je sauvegarde l'adresse IP en une variable:
const ip = getUserIP();
Puis tapez ip
dans la console, la valeur est la suivante:
Promise { <state>: "fulfilled", <value>: "/* my IP here*/" }
J'ai visionné des vidéos sur YouTube qui utilisaient la même logique/syntaxe, bien que pour une API différente, mais cela fonctionne. J'ai effectué une recherche sur Google et SO et je n'ai pas trouvé de fil ayant le même problème.
Qu'est-ce que je rate?
Merci.
Fonctions asynchronesreturn Promises, vous devez obtenir cette valeur comme suit:
getUserIP().then(ip => console.log(ip)).catch(err => console.log(err));
Ou, vous pouvez ajouter la déclaration async
à la fonction principale qui appelle la fonction getUserIP
:
async function main() {
const ip = await getUserIP();
}
Les fonctions async
renvoient une Promise
et sa valeur résolue correspond à tout ce que vous retournez. Pour obtenir ip
, vous devez utiliser then
.
getUserIP().then(ip => {})
Vous devez ajouter .then
à getUserIP()
car la fonction async
renvoie une promesse.
getUserIp().then(ip => console.log(ip));
Vous pouvez également
(async() => {
const ip = await getUserIP();
console.log(ip);
})();