【发布时间】:2012-02-02 22:23:19
【问题描述】:
我有以下代码:
var ids = new Array(5);
$(function(){
html5sql.process(sql,
function(transaction, results, rowsArray){
for(var i = 0; i < rowsArray.length; i++){
ids[i] = rowsArray[i].ID;
console.log(ids[i]); //returns the actual value for i
}
},
function(error, statement){
console.log("Error: " + error.message);
}
);
console.log(ids[0]); //returns undefined
});
如您所见,for 循环内的打印输出打印出正确的值。另一方面,当我在函数之外打印时,我得到了未定义。 范围界定有什么问题?如何获取函数外数组的实际值?
谢谢
【问题讨论】:
-
欢迎来到 async 的精彩世界!你不能那样做。
-
这些函数是回调。它们不会立即被调用。
-
我该如何解决这个问题。谁能给我解释一下发生了什么?
-
您被告知对
html5sql.process()的调用是异步运行的。对console.log()的调用在任何值被分配给ids 之后立即发生。您需要延迟对 console.log 的调用,直到处理完成(并且已分配值)。 IE。您有时间问题,而不是范围问题。
标签: javascript jquery html scope