javascript - 使用 Fetch 返回 GitHub 用户数据

标签 javascript async-await es6-promise github-api

原谅我的无知,我对 JavaScript 还不是很好(目前)。我正在尝试从 GitHub 获取公共(public)用户数据并将其显示在我的个人投资组合中。目前我有以下代码:

 getData(url) {
  return fetch(url);
}
const userData = getData("https://api.github.com/users/userName");

userData
  .then((response) => response.json())
  .then((response) => console.log(response))
  .catch((error) =>
    console.log("There was an error fetching the data: " + error)
  );

  console.log(userData)

我得到的响应是带有用户数据的 JSON,但是当我 console.log(userData)我得到 Promise { <state>: "pending" }作为回应。

此外,我可以看到初始响应中有一个 id,但是当我 console.log(userData.id)我得到 undefined .

我已经阅读了 GitHub API 文档并观看了一些关于 Promises 的视频,但我似乎无法让我的代码正常工作。

感谢您抽出宝贵时间查看此内容,非常感谢您对此提供的任何帮助!

最佳答案

这是因为 userData 是一个 promise 。如果您尝试使用 async/await(文档可用 here),您将能够同步获取数据。

 const getData = async (url) => {
   try {
     const data = await fetch("https://api.github.com/users/:user_name");
     console.log(data.json());
     return data;
   } catch (e) {
     console.log("There was an error fetching the data: " + error)
   }
 }

关于javascript - 使用 Fetch 返回 GitHub 用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53974136/

相关文章:

javascript - 如何从 Array.map() 函数正确返回异步数据

javascript - 在递归中使用 javascript promises 进行 Api 调用

javascript - window.open() 现在还有用吗?

javascript - Three.js 正交相机 : Zoom All

javascript - extjs 4 : button on click event can't work

ios - 如何在 Swift 中实现异步/等待?

javascript - .ondragstart 不等同于 .addEventListener ("dragstart"

c# - ConfigureAwait(false) 维护线程身份验证,但默认情况下它不会

javascript - 如何在 native javascript Promise 中包装 jsonP 回调?

javascript - 何时不使用 promise