0

GoogleFusionテーブルからいくつかのデータを読み取り、その結果を使用したいと思います。javascriptは初めてですが、結果を公開してグローバルに使用できるようにする方法を理解したいと思います。これまでのところ、次のようになっています。

<!DOCTYPE html>
<meta charset="utf-8">
<head>
    <script src="http://ft2json.appspot.com/api/ft2json.js" type="text/javascript"></script>
    <script type="text/javascript">

    var results = ft2json.query(
        'SELECT * FROM 1j1kKW9s9CrtZ6_o6MdC-xb0YNWb73rQQYENmzQ', /* Fusion Tables query. */
        function(result) {
            /* Callback function. */
            console.log(result);
        },
        {
            /* Optional parameters. */
            start : 25,
            limit : 50
        }
    );
    console.log('data', results);
    </script>
</head>

<body>

</body>
</html>

1つ目console.logはオブジェクトを返しますが、2つ目はをconsole.log('data', results);返しますUndefined

Chromeコンソールでconsole.log('data', results);は、が最初に読み取られますが、理由がわかりません。

4

1 に答える 1

0

これが起こったことです

  1. クエリが送信されました(クエリ関数)
  2. console.log('data'、results)が呼び出されました
  3. コールバック関数が呼び出されました

クエリは非同期です。したがって、何が起こったのかというと、クエリ結果を待っている間、コードは実行され続けます。以下でできることの例を参照してください。

例1

    ft2json.query(
        'SELECT * FROM 1j1kKW9s9CrtZ6_o6MdC-xb0YNWb73rQQYENmzQ', /* Fusion Tables query. */
        function(result) {
            /* Callback function. */
            console.log(result);
            // do stuff with result object here
        },
        {
            /* Optional parameters. */
            start : 25,
            limit : 50
        }
    );
</script>

例2

    var doSomethingWithResult = function (result) {
         // do stuff with result object here
    };

    ft2json.query(
        'SELECT * FROM 1j1kKW9s9CrtZ6_o6MdC-xb0YNWb73rQQYENmzQ', /* Fusion Tables query. */
        function(result) {
            /* Callback function. */
            doSomethingWithResult(result);
        },
        {
            /* Optional parameters. */
            start : 25,
            limit : 50
        }
    );
</script>
于 2012-08-14T17:22:36.850 に答える