Fetch返回类型不确定的数组。如何获取其中的数据?

时间:2019-10-23 12:09:52

标签: javascript promise fetch

我需要使用从服务器通过fetch返回的JSON来构建HTML,但我不知道如何仅从中访问这些人的名字。

Symbol(Symbol.iterator))
fetch(URL)
.then(res => res.json())
.then(data => console.log(data))

/*logs:
(3) [{…}, {…}, {…}]
0: {title: "Patrick"}
1: {title: "Ben"}
2: {title: "Jeffree"}
length: 3
__proto__: Array(0)
*/

.then(function(data) {
    console.log(typeof data); //undefined
    let arr = Array.from(data); //Uncaught (in promise) TypeError: Cannot convert
                                //undefined or null to object
})

起初,我尝试对其进行迭代,因为它(data)看起来像数组,但得到了Uncaught (in promise) TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))。 这是一个异步问题,这就是为什么data未定义的原因?我发现由于可以正确记录它,因此在我尝试将其转换为数组时应该已经解决了。

1 个答案:

答案 0 :(得分:1)

console.log返回undefined。您需要在登录后返回data,以便用data而不是undefined

来解决承诺
fetch(URL)
.then(res => res.json())
.then(data => {console.log(data); return data})
.then(data => {
  console.log(typeof data)
})

Promise.resolve(1).then(console.log).then(x => console.log(1, typeof x))

Promise.resolve(2).then(tap).then(x => console.log(2, typeof x))

function tap(x) {
  console.log(x);
  return x;
}