【问题标题】:Javascript fetch API in react-fluxreact-flux 中的 Javascript 获取 API
【发布时间】:2016-06-30 12:26:06
【问题描述】:

我正在研究@Dan Abramov 的flux-react-router-example,我在 Fetch API 代码中注意到 here:fetch API 有一个返回承诺,里面有一个嵌套的返回:

return fetch(url).then(response =>
response.json().then(json => {
  const camelizedJson = camelizeKeys(json);
  const nextPageUrl = getNextPageUrl(response) || undefined;

  return {
    ...normalize(camelizedJson, schema),
    nextPageUrl
  };
})

);

我对这个嵌套返回感到困惑,为什么在这里使用它?为什么不直接返回 response.json()?

好像如果我做同样的事情,我会得到一个未定义的值

【问题讨论】:

    标签: javascript ajax reactjs flux reactjs-flux


    【解决方案1】:

    从响应中检索到的json是

    1. 使用humps转换为驼峰式
    2. 使用 normalizr 取消嵌套,以便与 redux 存储结合使用来更轻松地处理
    3. 丰富的下一页 url,从 link 标头解析

    更多关于为什么在存储中存储嵌套响应对象通常是一个坏主意的讨论和推理可以在React JS Google Group找到。

    【讨论】:

    • 感谢您的回答,我其实很好奇 response.json() 中的 return 语句是如何工作的。据我了解,这将在外部使用时创建一个未定义的值
    • 请求是使用 githubs fetch polyfill 发出的,它基于 whatwg fetch 规范的 polyfillable parts。像text()json() 这样的主体方法返回promise 产生的结果,然后可以使用标准promise 链进行链接——这就是本例中发生的情况。长话短说:json() 调用的返回值是一个承诺。
    猜你喜欢
    • 2017-08-14
    • 2021-01-08
    • 2021-12-10
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2016-10-25
    • 2016-03-28
    相关资源
    最近更新 更多