获取api,为啥我必须在响应json()上使用then,试图理解承诺[重复]
Posted
技术标签:
【中文标题】获取api,为啥我必须在响应json()上使用then,试图理解承诺[重复]【英文标题】:Fetch api, why do I have to use then on the response json(), trying to make sens of promises [duplicate]获取api,为什么我必须在响应json()上使用then,试图理解承诺[重复] 【发布时间】:2016-12-21 04:16:01 【问题描述】:我试图理解 Promise,所以我在 twitch 上尝试了一个简单的 get 请求。我不明白为什么json()
返回一个承诺。为什么 ?响应中已经包含数据,为什么它是一个承诺?
fetch('https://api.twitch.tv/kraken/games/top?limit=10&offset=0')
.then( resp =>
resp.json()
.then(function(data)
console.log(data);
);
);
换句话说:第一个then
,我理解,它等待响应。但是,当进入 then 函数时,这意味着已经收到响应,因此数据应该可以立即访问,而不需要另一个承诺。它只是让我感到困惑。
【问题讨论】:
基本上,这样可以处理大于可用 RAM 的响应。顺便说一句,您不需要每个承诺的匿名包装器。写一两个可重用的助手来减少杂乱无章 【参考方案1】:来自docs:
fetch() 请求的响应是一个 Stream 对象,这意味着 当我们调用 json() 方法时,会返回一个 Promise,因为 流的读取将异步发生。
【讨论】:
以上是关于获取api,为啥我必须在响应json()上使用then,试图理解承诺[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能用我的 api 响应更新我的状态?数据是一个对象数组