Fetch возвращает массив как с неопределенным типом. Как мне получить данные внутри него? - PullRequest
0 голосов
/ 23 октября 2019

Мне нужно использовать этот JSON, возвращенный с сервера через fetch, для построения 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 Ответ

1 голос
/ 23 октября 2019

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...