Я пытаюсь использовать переменную цикла в функции 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.