Javascript在围绕Google analytics api调用循环之后,如何显示多个结果?

Javascript在围绕Google analytics api调用循环之后,如何显示多个结果?,javascript,loops,Javascript,Loops,在完成以下步骤后,我成功地打电话从谷歌检索分析数据。然后,我使用不同的视图ID循环它。我只能显示一个结果。这是我的密码: function queryData() { var ids = [["900846", "/abc"], ["7532846", "/blog/abc/"]]; ids.forEach(function (entry) { gapi.client.request({ path: '/v4/reports:b

在完成以下步骤后,我成功地打电话从谷歌检索分析数据。然后,我使用不同的视图ID循环它。我只能显示一个结果。这是我的密码:

function queryData() {

     var ids = [["900846", "/abc"], ["7532846", "/blog/abc/"]];

     ids.forEach(function (entry) {
         gapi.client.request({
             path: '/v4/reports:batchGet',
             root: 'https://analyticsreporting.googleapis.com/',
             method: 'POST',
             body: {
                 reportRequests: [{
                     viewId: entry[0],
                     dateRanges: [{
                         startDate: '7daysAgo',
                         endDate: 'today'
                     }],
                     metrics: [{
                         expression: "ga:uniquePageviews",
                     },
                     ],
                     dimensionFilterClauses: [{

                         filters: [{

                             dimension_name: 'ga:pagePath',
                             operator: 'EXACT',
                             expressions: [entry[1]]
                         }]
                     }]

                 }]
             }
         }).then(displayResults, console.error.bind(console));
     })
 }


 function displayResults(response) {
     var result = response.result;
     document.getElementById('query-output').value = JSON.stringify(result, null, 2);
 }
当上面的数组中有两个结果时,这只显示一个结果。非常感谢您的帮助。

据我所知,您的#查询输出值将在每次请求完成时重新分配。相反,将其输出到控制台以检查是否有多个值。如果有,请尝试以下方法:

document.getElementById('query-output').value += JSON.stringify(result, null, 2);

您不能在displayResults函数中累积结果吗

差不多

var result;
function displayResults(response){
    result = result + response.result;
    document.getElementById('query-output').value = JSON.stringify(result, null, 2);
}

不确定您正在对字符串执行什么操作,可能您需要以另一种方式连接它,但总体思路应该是可行的。

我将使用
承诺。所有
确定所有调用何时完成:


你必须重构你的
displayResults
方法来处理它返回的数组。

谢谢你,它是+=我要找的操作符-救生圈!我是JS的新手,在尝试各种方法的过程中,我困惑了好几个小时。再次感谢!非常感谢你的这种方法。下一次我会试试:)谢谢你的建议,我刚才缺少+=运算符,但原理相同,谢谢!
const results = ids.map(function (entry) {
  return gapi.client.request({
    ...
  })
})
Promise.all(results).then(displayResults, console.error.bind(console));