gpt4 book ai didi

javascript - webkit executesql语句和循环问题

转载 作者:行者123 更新时间:2023-11-30 13:31:46 26 4
gpt4 key购买 nike

我正在尝试在循环包含的 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”总是“count+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”和“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 的引用将正确解析。

关于javascript - webkit executesql语句和循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com