JavaScript fetch API - 为什么response.json()返回一个promise对象(而不是JSON)?

时间:2016-09-11 12:01:37

标签: javascript json asynchronous

我刚刚开始学习Fetch API:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch 这是我编写的代码片段,用来修补它: 取( 'http://swapi.co/api/people/1')   .then(function(response){     var json = response.json();     的console.log(JSON);     //期待:{“名字”:“卢克天行者”,“身高”:“1.72米”,...}     // Get:Promise {[[PromiseStatus]]:“pending”,[[PromiseValue]]:undefined}   }); 我本来希望从response.json()中获取一个JSON对象。 与使用JSON.parse()时获得的内容类似。 相反,我得到了一个承诺对象。 如果我扩大这里显示的承诺链...... return response.json()。then(function(json){       //进一步处理你的JSON }); ...然后它工作:在以下承诺的then方法中,它显示为json。 为什么我不能在第一个promise的then()中检索JSON数据? 谁能请解释这里发生了什么? 我真的很感激。

1 个答案:

答案 0 :(得分:14)

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

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