0

考虑来自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 应用程序正在发送具有不同提要参数的 GA api 请求,以及我的应用程序中不同的变量状态。由于异步响应,当同时发送多个请求时,处理结果的事情会变得混乱。

有没有办法在请求中包含一个额外的参数到回调函数(handleDataFeed),可以在处理结果时获取?
或者有其他方法可以解决这个问题,最好不必创建请求队列。

4

1 回答 1

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);
    }
于 2011-02-25T12:20:47.707 回答