考虑来自google analytics api docs的示例代码:
function getDataFeed() {
var myFeedUri = 'https://www.google.com/analytics/feeds/data' +
'?start-date=2009-04-01' +
'&end-date=2009-04-30' +
'&dimensions=ga:pageTitle,ga:pagePath' +
'&metrics=ga:pageviews' +
'&sort=-ga:pageviews' +
'&max-results=10' +
'&ids=' + document.getElementById('tableId').value;
myService.getDataFeed(myFeedUri, handleDataFeed, handleError);
}
function handleDataFeed(result) {
// An array of Analytics feed entries.
var entries = result.feed.getEntries();
....
}
我的javascript应用程序正在发送带有不同Feed参数的GA api请求,以及我的应用中不同的变量状态。由于异步响应,当同时发送多个请求时,在处理结果时会出现混乱。
有没有办法在请求中包含一个额外的参数给回调函数(handleDataFeed),在处理结果时可以拾取它?
或者还有其他方法可以解决这个问题,最好不必创建请求队列。
答案 0 :(得分:0)
您可以尝试使用闭包作为回调函数,以便通过词法范围提供额外的数据:
function getDataFeed() {
var myFeedUri = 'https://www.google.com/analytics/feeds/data' +
'?start-date=2009-04-01' +
'&end-date=2009-04-30' +
'&dimensions=ga:pageTitle,ga:pagePath' +
'&metrics=ga:pageviews' +
'&sort=-ga:pageviews' +
'&max-results=10' +
'&ids=' + document.getElementById('tableId').value;
var extraData = "extra data here";
myService.getDataFeed(myFeedUri, function(result) {
// An array of Analytics feed entries.
var entries = result.feed.getEntries();
// Extra data still in scope here
alert(extraData);
....
}, handleError);
}