如何从“await fetch()”解析 Promise?

Posted

技术标签:

【中文标题】如何从“await fetch()”解析 Promise?【英文标题】:How to parse a Promise from "await fetch()"? 【发布时间】:2021-09-12 12:24:18 【问题描述】:

我有一个用户详细信息页面组件。我想调用 fetchApiReponse() 方法,其中有一个代码用于从 api 获取外部数据,使用“await fetch()”。

如何解析该响应并将结果返回给组件?我不想使用 getStaticProps() 执行此操作,因为我将从 url 获取 userId 并将 ti 添加到 api 调用 url。

这是我的代码:

export async function fetchApiResponse() 
  const sku = await useRouter().query.sku;
  const url = `https://jsonplaceholder.typicode.com/users?id=1`;
  console.log(url);

  const res = await fetch(url);
  const data = res.json();

  return data;

组件文件:

export default function UserDetailPage(params) 
    const user = fetchApiUser();

    return (
        <>
            <h3>user.name</h3>
        </>
    );

很遗憾,上面的那段代码不起作用。它说 res.json() 的结果是一个 Promise

【问题讨论】:

const data = await res.json(); 但这仍然会让你的user 成为一个承诺...... 您需要等待对fetchApiResponse 函数的调用,因为它返回一个promise。 fetchApiResponse 函数返回的 Promise 将根据 res.json() 返回的 Promise 发生的情况来实现或拒绝。 我已将代码从 fetchApiResponse 函数移至 getServerSideProps,然后将 json 响应传递给 props .. ,现在我不必解析 Promise,它工作正常。 【参考方案1】:

我是如何解决的:

我已将代码从 fetchApiResponse() 函数移至 getServerSideProps(),然后将 json 响应传递给 props .. ,现在我不必处理 Promise 并解析 Promise,它工作正常。

但是是的,我仍然想知道如何解析 Promise 结果以及如何处理它。

【讨论】:

以上是关于如何从“await fetch()”解析 Promise?的主要内容,如果未能解决你的问题,请参考以下文章

如何在node.js中正确调试简单的Prom?

E2PROM的尺寸

无法使用 docker (prom/prometheus) 加载 prometheus.yml 配置文件

EE2PROM

EE2PROM

E2PROM芯片的特点及作用,总线