Javascript获取和映射工作不正常

Javascript获取和映射工作不正常,javascript,Javascript,我试图获取一个多页api,并将json放在一个数组中。我已经设置好了它,这样它就可以执行所需的抓取次数,并且正在设置正确的承诺次数。我得到了50多个不同的回复。但是,当我尝试映射这些响应时,它只提取第一组数据,并将其重复推送到数组中。我做得不对的是什么 var data; fetch(URL_ARTISTS3,{ method:'GET' }) .then(response => response.json()) .then(json =&g

我试图获取一个多页api,并将json放在一个数组中。我已经设置好了它,这样它就可以执行所需的抓取次数,并且正在设置正确的承诺次数。我得到了50多个不同的回复。但是,当我尝试映射这些响应时,它只提取第一组数据,并将其重复推送到数组中。我做得不对的是什么

var data;
    fetch(URL_ARTISTS3,{
        method:'GET'
    })
    .then(response => response.json())
    .then(json => {
        data =json;
        const apiPromises = [];
        var pagesRequired = Math.ceil(json.setlists["@total"] / json.setlists["@itemsPerPage"]);

        for (let i=pagesRequired; i>0;i--) {
            var fetchurl = URL_ARTISTS3 + '?page = ' + i;
            apiPromises.push(fetch(fetchurl, {
              method: "GET",
              body: json
            }));
        }

        Promise.all(apiPromises)
        .then(responses => {
            var processedResponses = [];
            responses.map(response => response.json()
                .then(json => {
           /****THIS LINE ADDS THE SAME JSON RESPONSE MULTIPLE TIMES*****/
                    processedResponses.push(json.setlists.setlist);
                })
             )   
            console.log('processedResponses: ', processedResponses)     

        });

我不确定它是否解决了问题,但有一个问题是,在承诺得到解决之前,您正在记录
processedResponses

通过移动
response.json()
调用,可以大大简化代码:

apiPromises.push(
  fetch(fetchurl, {method: "GET", body: json})
    .then(response => response.json())
    .then(json => json.setlists.setlist);
);

// ...

Promise.all(apiPromises).then(processedResponses => console.log(processedResponses));

谢谢你的答复。我尝试了这个方法,但没有解决同一个json被多次推送的问题。在这种情况下,每个调用要么返回相同的数据,要么在每个响应中都返回相同的值。我提供的示例不可能多次处理单个API调用。
json.setlist.setlist
在每个响应中都是相同的。但是,每个响应调用都针对不同的url:url:“”和:url:“”但是
json.setlist.setlist
是您要提取的值,忽略响应的任何其他部分。因此,如果每个响应中的值都相同,那么最终将得到一个数组,其中包含相同的值
n
次。如果您想得到整个响应,不要执行
.then(json=>json.setlist.setlist)。我不知道还能告诉你什么。如果您认为
json.setlist.setlist的值在每个响应中都应该不同,请阅读您正在使用的服务的API文档,并验证您发送的参数是否正确。如果
json.setlists.setlist
预期相同,但需要不同的值,则不要访问
json.setlists.setlist
,而是访问响应的不同部分。