react-native fetch 中的 'then(res => res.json())' 是啥意思? [复制]

Posted

技术标签:

【中文标题】react-native fetch 中的 \'then(res => res.json())\' 是啥意思? [复制]【英文标题】:What does 'then(res => res.json())' in react-native fetch mean? [duplicate]react-native fetch 中的 'then(res => res.json())' 是什么意思? [复制] 【发布时间】:2018-03-16 17:07:06 【问题描述】:

react-native fetch 下面sn-p中then(res => res.json())是什么意思?

fetch(url)
      .then(res => res.json())
      .then(res => 
        this.setState(
          data: res,
          error: res.error || null,
          loading: false
        );

【问题讨论】:

如何更新?它没有表现出任何努力。 OP 甚至不知道 => 是什么。这可以通过查看 SO 和文档来简单地解决 【参考方案1】:

这并不是一个真正的反应问题,因为 fetch 然后是 js 本身的一部分。

fetch 返回一个对象作为 Promise,其中包含各种信息,如标头、HTTP 状态等。

您有res.json() 和其他各种可能性。 .json() 只会将正文作为带有 json 内容的承诺返回。

欲了解更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

您可以按如下方式返回数据:

.arrayBuffer() .blob() .json() .text() .formData()

【讨论】:

很好,但是resres.json() @GottZ 之间有=> 符号是什么意思 这就是所谓的 lambda。那也是javascript的一部分。去这里了解更多信息:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… @AniketSingh 基本上就是.then(function(res)return res.json()) 但现在不要大肆宣传 lambda。 this 在 lambda 中会有所不同,并将引用周围的范围。 Move over people ;) 我认为这是重要的部分:请注意,尽管方法被命名为 json(),但结果不是 JSON,而是将 JSON 作为输入并解析它的结果生成一个 JavaScript 对象。为什么要搞得这么模棱两可?为什么不调用这个方法 toObject()?【参考方案2】:

您的代码部分:

res => res.json()

是一个ES6 arrow function,翻译成:

function(res)
    return res.json();

关于json() 函数:

Body mixin 的json() 方法接受一个响应流和 读完。它返回一个用 将正文文本解析为 JSON 的结果。

阅读更多here。

【讨论】:

【参考方案3】:

Javascript fetch 函数从指定的url 异步拉取资源。同时fetch 返回PromisePromise 帮助处理异步部分,并在使用获取的资源作为参数加载资源后运行传递给then (res => res.json()) 的函数。如果是 JSON 格式,则可以使用 json() 解析获取的资源。

then 还返回一个 Promise 使其可链接。

fetch(url) // asynchronously load contents of the url
           // return a Promise that resolves when res is loaded
      .then(res => res.json()) // call this function when res is loaded
      // return a Promise with result of above function
      .then(res =>  // call this function when the above chained Promise resolves
        this.setState(
          data: res,
          error: res.error || null,
          loading: false
        );

res => res.json()也可以写成(but not exactly equal)

function(res)  return res.json()

【讨论】:

以上是关于react-native fetch 中的 'then(res => res.json())' 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 fetch 中获取 JSON 数据(react-native)

fetch() 在 react-native (iOS) 上做 GET 而不是 POST

react-native——fetch

react-native fetch 返回状态码 + json

react-native android fetch json停止工作

如何显示从 fetch() 方法返回的图像 - react-native