无法使用Promises获取对象

时间:2016-11-02 21:17:09

标签: javascript es6-promise

我使用新的Fetch API从API中检索对象。这是我的代码。

getUserYguid(){
  fetch(this.myapi, {
    credentials: "include",
    method: 'get',
    headers: {
      "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
    },
    body: null
  }).then(function(response){
    console.log(response.status)
    console.log(response.json());
    let obj = response.text();
    console.log(obj.name);
  }).catch(function(error){
    console.log('Request failed', error);
  });
}

当我调用response.status时,它工作正常,我可以看到状态消息为200。 当我调用response.json()或response.text()时,我可以看到返回的完整对象。 问题是下一行代码不起作用。 当我尝试从对象中检索属性时,例如

console.log(obj.name);

我明白了, undefined

1 个答案:

答案 0 :(得分:1)

response.text()会返回一个承诺,因此您必须再次使用then

fetch(url, opts).then(function(response){
  response.text().then(function(txt){
    console.log(txt)
  })
})

并且通过你的obj.name使用看起来好像你想要一个json响应...... 不是文字,所以你需要这样做:

fetch(url, opts).then(function(response){
  response.json().then(function(obj){
    console.log(obj.name)
  })
})

get是默认方法,因此无需指定...并且blob为null,因此不需要...