2012-08-14 81 views
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返回对象,但第二console.log('data', results);返回Undefined

在Chrome控制台中,console.log('data', results);是先读取的,这我不明白为什么?

回答

0

这里是发生了什么事

  1. 您的查询发送(查询功能)
  2. 的console.log( '数据',结果)被调用
  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> 
+0

所以1. '查询被发送' 即 'VAR结果='? 为什么我不能从第二个console.log中读取它,因为我想处理数据? – user1598690 2012-08-14 18:15:11

+0

@ user1598690听起来好像您期待将结果指定为查询函数的“返回值”。这不是查询功能的作用。查询函数做的是将结果传递给回调函数。我将用例子编辑我的答案。 – 2012-08-14 18:24:43

+0

好的,我现在看到了,谢谢。 – user1598690 2012-08-14 18:31:54