javascript – 使用Async / Await获取API返回值意外

参见英文答案 > js async/await return promise                                    1个
这是功能:

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,但找不到具有相同问题的帖子.

我错过了什么?

谢谢.

解决方法:

Async functions返回Promises,你需要获得如下值:

getUserIP().then(ip => console.log(ip)).catch(err => console.log(err));

或者,您可以将async声明添加到调用函数getUserIP的main函数中:

async function main() {
    const ip = await getUserIP();
}

相关文章

最后的控制台返回空数组.控制台在ids.map函数完成之前运行va...
我正在尝试将rxJava与我已经知道的内容联系起来,特别是来自J...
config.jsconstconfig={base_url_api:"https://douban....
我正在阅读MDN中的javascript,并且遇到了这个谈论承诺并且不...
config.jsconstconfig={base_url_api:"https://douban....
这是我的代码main.cpp:#include<string>#include<...