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>

第一个console.log返回 Object,但第二个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 回答