webkit执行sql语句和循环问题
webkit executesql sentence and loop problem
我正在尝试在循环包含的executeSql函数中使用循环变量。但如果我不使用闭包,循环变量会得到最后一个值。当我使用闭包时,我不会从executeSql函数中获得结果列表。示例:
for (var i = 0; i < count; i++) {
tx.executeSql('SELECT AColumn FROM ATable WHERE refID=' + i, [],
function(tx,results) //success function
{
//do something
}
,errorfunction);
}
在成功函数中,"i"总是"计数+1"。
为了解决这个问题,我更改了我的代码如下:
for (var i = 0; i < count; i++) {
tx.executeSql('SELECT AColumn FROM ATable WHERE refID=' + i, [],
(function(tx,results) //success function
{
//do something
})(i)
,errorfunction);
}
有了这个,我得到了"我"的权利。但"结果"是未定义的。
我试着像这样通过"tx"answers"I":
(function(tx,results) //success function
{
//do something
})(tx,null,i)
有了这一点,我明白了为什么我得到的"结果"为空。我想学习如何获得executeSql的正确结果。
您正在寻找以下内容:
for (var i = 0; i < count; i++) {
tx.executeSql('SELECT AColumn FROM ATable WHERE refID=' + i, [],
(function(i){
return function(tx,results) //success function
{
//do something
};
})(i),
errorfunction);
}
在一天结束时,您需要传递一个签名function(tx,res)
的函数,这显然是整个(function(i){ return function(tx,res){ ... }; })(i)
的作用,因为外部匿名函数会立即执行并返回该签名的函数。
调用外部函数时,该内部函数中的值i
的值为i
(即每次迭代的值),因为值i
是按值传递到外部匿名函数中的,因此返回的内部函数中对i
的引用将正确解析。
相关文章:
- Jquery图像循环问题
- JavaScript的循环问题,将值插入数组将不起作用
- 数学和循环问题
- Java脚本循环问题
- NetSuite行项目删除内部循环问题
- 附加仅适用于第一个子循环问题
- 简单的 do/while 循环无限循环问题
- Javascript 和 HTML5 循环问题
- 仅在jQuery函数内部循环问题
- 嵌套循环问题
- 谷歌地图标记的循环问题
- 函数在 For 循环问题中
- PHP while 循环问题在 iOS 5 Safari 中
- JavaScript 加载重置时间戳循环问题
- Jquery 循环问题
- 与jquery结合使用时的Javascript循环问题
- Javascript中的ID和for循环问题
- 无限滚动(mysql,php&js)循环问题
- Facebook查询循环问题
- jQueryrotate if else循环问题