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 に答える