这是功能:
const getUserIP = async () => {
let response = await fetch('https://jsonip.com/');
let json = await response.json();
console.log(json.ip)
return json.ip;
};
在控制台中,按预期记录IP地址。但是,当我将'IP地址'保存到变量时:
const ip = getUserIP();
然后在控制台中键入ip
,值显示为:
Promise { <state>: "fulfilled", <value>: "/* my IP here*/" }
我在YouTube上观看了使用相同逻辑/语法的视频,虽然它们使用的是不同的API,但它确实有用。我搜索过Google和SO,但找不到同样问题的帖子。
我错过了什么?
感谢。
答案 0 :(得分:3)
Async functions 返回Promises,您需要获得以下值:
getUserIP().then(ip => console.log(ip)).catch(err => console.log(err));
或者,您可以将async
声明添加到调用函数getUserIP
的主函数中:
async function main() {
const ip = await getUserIP();
}
答案 1 :(得分:1)
您必须将.then
添加到getUserIP()
,因为async
函数正在返回一个承诺。
getUserIp().then(ip => console.log(ip));
你也可以
(async() => {
const ip = await getUserIP();
console.log(ip);
})();
答案 2 :(得分:1)
async
函数返回Promise
,其解析后的值就是您从中返回的值。要获得ip
,您必须使用then
。
getUserIP().then(ip => {})