У меня есть проблема, или, по крайней мере, у меня нет решения.
Я получаю некоторые вызовы API через карту, и я могу console.log все результаты, и это здорово, но проблема в том, что я хочу объединить все результаты в один массив.
var alpha = ['a', 'b', 'c', 'd', 'e'];
alpha.map(alpha => {
fetch(`https://myurl.com/api/members/page?prefix=${alpha}`)
.then(res => res.json())
.then(data => matches.push)
.then(() => console.log(matches))
})
Я думаю, мне нужно сделать какое-то ожидание или что-то в этом роде?
Мой ответ от API выглядит так:
{"list_complete":true,"keys":
[
{
"username": "name.com",
"uuid": "-47c9-88b6-2474090c7927",
"user_type": 1,
"subscribed": "false",
"lastLogin": 1611066809086,
"profile": {
"name": "Name Lastname",
"email": "name.com",
"uuid": "3e92f458-6331-2-88b6-2474090c7927",
"address": "",
"history": [
{
"titleId": "5fac58f764e6710017411e79",
"posterUrl": "url.jpg",
"displayName": "Guns N ´ Roses - Appetite for Democracy",
"t": 0,
"d": 8492.2
},
{
"titleId": "5f7eadb3963c170017a919f3",
"posterUrl": "url.jpg",
"displayName": "Frank Zappa - Apostrophe Overnite Sensation (Classic Albums)",
"t": 7.728575,
"d": 2974.9
},
{
"titleId": "5e4463a395c832405e7effc0",
"posterUrl": "url.jpg",
"displayName": "Bob Marley - Uprising Live!",
"t": 3285.406821,
"d": 6807.7
},
{
"titleId": "5f80c6d0045fdf0017735019",
"posterUrl": "url.jpg",
"displayName": "Van Morrison - In Concert",
"t": 3610.529879,
"d": 4558.29
},
{
"titleId": "5fa85aba9c4a1900177e5cf9",
"posterUrl": "url.jpg",
"displayName": "Iron Maiden - En Vivo!",
"t": 2522.988949,
"d": 3380.5
},
{
"titleId": "5f719cb75d994e0017b429c5",
"posterUrl": "url.jpg",
"displayName": "Placebo - Placebo Live At The O2 Brixton Academy",
"t": 1426.589863,
"d": 5061.89
},
{
"titleId": "5fb3fd1731be640017c2f878",
"posterUrl": "https://slam-assets.s3.eu-north-1.amazonaws.com/staging/5fb3fd1731be640017c2f878/cover/1606214166013_nirvanastaende.jpg",
"displayName": "Nirvana - Nevermind (Classic Albums)",
"t": 0,
"d": 2948.69
}
],
"favourites": [
"5f9039ed1279d600170378c2",
"5facf94364e6710017411e7d",
"5e4463a395c832405e7effc0"
]
},
"subscription": null
}
]
}
И данные, которые я хочу собрать, находятся в массиве под названием история для каждого пользователя.
Promise.all
и связанные методы. . Как именно вы планируете использовать полученные значения? - person Sebastian Simon   schedule 09.03.2021matches
— это массив,matches.push
мало что даст. Вам понадобится.then(matches.push)
, если вы хотите поместитьdata
вmatches
(илиthen(data => { matches.push(data); })
, чтобы не получить ответ новой длиныmatches
(выводpush
). - person Heretic Monkey   schedule 09.03.2021Promise.all()
: flaviocopes.com/how-to- ожидание-несколько-обещаний-javascript - person Carsten Massmann   schedule 09.03.2021.then(matches.push)
не будет работать из-за контекста метода быть потерянным; это должно быть.then(matches.push.bind(matches))
. - person Sebastian Simon   schedule 09.03.2021