使用异步/等待返回值意外获取 API

Ibr*_*him 3 javascript promise fetch-api

这是函数:

const getUserIP = async () => {
  let response = await fetch('https://jsonip.com/');
  let json = await response.json();

  console.log(json.ip)
  return json.ip;
};
Run Code Online (Sandbox Code Playgroud)

在控制台中,IP 地址按预期记录。但是,当我将“IP 地址”保存到变量时:

const ip = getUserIP();
Run Code Online (Sandbox Code Playgroud)

然后ip在控制台输入,值显示为:

Promise { <state>: "fulfilled", <value>: "/* my IP here*/" }
Run Code Online (Sandbox Code Playgroud)

我在 YouTube 上观看过视频,这些视频使用了相同的逻辑/语法,尽管 API 不同,但它确实有效。我搜索了 Google 和 SO,但找不到有相同问题的线程。

我缺少什么?

谢谢。

Ele*_*Ele 5

异步函数返回 Promises,您需要按如下方式获取该值:

getUserIP().then(ip => console.log(ip)).catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)

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

async function main() {
    const ip = await getUserIP();
}
Run Code Online (Sandbox Code Playgroud)