当前位置: 首页 > 知识库问答 >
问题:

JavaScript获取API-为什么不响应。json()返回promise对象(而不是json)?[副本]

劳星晖
2023-03-14

我刚刚开始学习获取API:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

下面是我编写的一段代码片段,用于修补:

fetch('http://swapi.co/api/people/1')
  .then(function(response) {
    var json = response.json();

    console.log(json);
    // Expected : { "name": "Luke Skywalker","height": "1.72 m", ... } 
    // Get : Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
  }); 

我希望从响应中得到一个JSON对象。json()。

与使用JSON时得到的类似。parse()。

相反,我得到了一个promise对象。

如果我像这里所示的那样扩大promise链...

return response.json().then(function(json) {
      // process your JSON further
});

... 然后它工作:在下面promise的then方法中,它显示为json。

为什么我不能在第一个promise的then()中检索JSON数据?

谁能解释一下这里发生了什么事?

我会非常感激的。

共有1个答案

太叔天宇
2023-03-14

因为response.json()返回另一个promise(在函数体中)

https://developer.mozilla.org/en-US/docs/Web/API/Body/json

 类似资料:
  • 当使用JavaScript读取API从服务器请求时,您必须执行以下操作 这里,

  • 问题内容: 我有一个$ .ajax()请求,其dataType设置为“ json”。服务器返回的JSON具有正确的mime类型“ application / json”。但是,我的jqXHR对象中的responseText始终是字符串。我究竟做错了什么?这是应该如何工作的吗? 这是我拨打电话的方式: 所以我必须做一个才能得到一个实际的对象。这似乎没有必要,因为$ .ajax()应该根据文档自动转换

  • 我最近一直在摆弄api,并注意到一些有点古怪的东西。 返回一个对象。http://jsbin.com/wofulo/2/edit?js输出 但是,如果写为: 这里是一个标准的,您可以访问title属性 所以我的问题是:为什么在对象文本中返回一个promise,但是如果刚刚返回,则返回值?

  • 使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png

  • 我有一个Spring控制器,它正在向我脚本中存在的ajax调用发送JSON响应。我在控制器方法中使用了@响应体,当通过ajax调用调用JSON时,它直接发送JSON作为响应。 在我添加JsonSanitizer之后。sanitize(myJsonString),它在ajax响应中作为html返回,而不是JSON。因此,我现在无法解析json对象。 示例代码: 在上面添加新行之后,响应以html而不

  • 我想知道为什么下面的代码没有定义到控制台?我已经消除了一个后端问题,因为当我使用broswers开发人员工具检查这个请求时,一切似乎都很好,而开发工具中显示的响应就是我所期望的json数据。谢谢你的帮助。