Javascript在围绕Google analytics api调用循环之后,如何显示多个结果?
在完成以下步骤后,我成功地打电话从谷歌检索分析数据。然后,我使用不同的视图ID循环它。我只能显示一个结果。这是我的密码: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
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));