提取api,为什么我必须在响应json()上使用then,试图做出承诺

塞德

我试图理解承诺,所以我在抽搐上尝试了一个简单的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函数时,这意味着已经接收到响应,因此应该立即访问数据,而无需另外的承诺。这只是让我感到困惑。

卡琳

文档

fetch()请求的响应是一个Stream对象,这意味着当我们调用json()方法时,将返回Promise,因为流的读取将异步发生。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我必须在实现类而不是仅接口类上使用@RequestParam批注?

为什么我必须在mongoDB查询中使用+

在Vue.js 3中,为什么我必须在ref上使用value属性,而不是在active上使用?

JS 承诺:为什么 await 必须在异步函数中?

为什么我必须在npm install命令上放“ -g”?

为什么我必须在所选选项上单击两次?

在Python中,当我使用upper方法时,为什么我必须在upper之后放()?

为什么我必须在使用管道时将读取的命令放入子shell

为什么我必须在这种情况下使用 GroovyMock?

为什么我必须在包的__init__.py中使用相对导入?

为什么我必须在此列上使用聚合函数?

为什么我必须在 ES6 的地图闭包中使用 return ?

为什么我必须在docker-compose中使用volume指令

为什么我必须在容器中使用bash -l -c?

为什么我必须在gulp中使用乙烯基源流?

为什么我必须在React中使用“ require”而不是“ import from”来导入图像?

为什么我必须在类中使用foo()而不是功能foo()?

为什么我必须在 Java 中使用 SomeRandomString.equals("something") 而不是 SomeRandomString == "something"?

为什么我必须在客户端库中公开宏实现的“使用”?

为什么我必须在str.format(* args,** kwargs)的列表前面使用*

为什么我必须在ggplot中使用aes_string()闪亮?

为什么我们必须在Java脚本(Razor)中对C#代码使用引号

为什么我必须在这个回文检查中使用 return ?

为什么我必须在任何地方使用静态?以及如何避免?

为什么我必须在这种情况下使用 !important ?

为什么我必须在猫鼬预保存中间件中使用 next()

为什么我必须在 Javascript 'for in' 循环中使用 ==,而不是 ===?

为什么不能在jest.Mock(必须在spyOn上使用.mockImplementation)中模拟函数?

为什么我必须在onLoaderReset中交换swapCursor(null)?