循环融合的结果
问题描述:
我想从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);
是先读取的,这我不明白为什么?
答
这里是发生了什么事
- 您的查询发送(查询功能)
- 的console.log( '数据',结果)被调用
- 回调函数被调用
该查询是异步的。所以,发生的事情是,你的代码在等待查询结果的时候一直运行。看下面你可以做什么的例子。
实施例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>
所以1. '查询被发送' 即 'VAR结果='? 为什么我不能从第二个console.log中读取它,因为我想处理数据? – user1598690 2012-08-14 18:15:11
@ user1598690听起来好像您期待将结果指定为查询函数的“返回值”。这不是查询功能的作用。查询函数做的是将结果传递给回调函数。我将用例子编辑我的答案。 – 2012-08-14 18:24:43
好的,我现在看到了,谢谢。 – user1598690 2012-08-14 18:31:54