我正在尝试从过去的20年中选拔顶尖的艺术家。多年来,我通过将当前迭代作为动态值传递到Spotify端点来进行循环。这里的代码“ x”是艺术家的数组。我需要所有艺术家位于一个阵列中,但是我正在不同阵列中获得每次迭代的响应。 (检查图片以获得输出)。我该如何解决?
const fetch = require("node-fetch")
let { userAccessToken } = require('./spotifyConfig')
async function getArtists() {
try {
for (let i = 2000; i < 2020; i++) {
let data = await fetch(`https://api.spotify.com/v1/search?q=year%3A${i}&type=artist&market=US`, {
method: "GET",
headers: {
Authorization: `Bearer ${userAccessToken}`
}
})
let actualData = await data.json()
var allItems = actualData.artists.items
var x = allItems.map(item => {
var everyOne = item.name
return everyOne
})
console.log(x)
}
} catch (e) { console.log (e) }
}
getArtists()
答案 0 :(得分:0)
输入在每个迭代中都是不同的,因此从逻辑上讲它可以正确获得不同的响应,这是在谈论响应结构吗?
答案 1 :(得分:0)
我认为问题是您没有在循环之外捕获数据,因此每次迭代时都会重置值。您需要声明一个结果数组以存储每次迭代,并在最后将其返回。
const fetch = require("node-fetch")
let { userAccessToken } = require('./spotifyConfig')
async function getArtists() {
const result = []
try {
for (let i = 2000; i < 2020; i++) {
let data = await fetch(`https://api.spotify.com/v1/search?q=year%3A${i}&type=artist&market=US`, {
method: "GET",
headers: {
Authorization: `Bearer ${userAccessToken}`
}
})
let actualData = await data.json()
var allItems = actualData.artists.items
var x = allItems.map(item => {
var everyOne = item.name
return everyOne
})
result.push(x)
}
return result.flat()
} catch (e) { console.log (e) }
}
getArtists()