使用数组中的值在本地数据库中循环,函数在循环中
Loop through a local database with a value from an array, function inside a loop
我正试图使用数组中每个对象的"TimeStamp"值迭代该数组,以从本地DB返回相关值。如果我只是简单地使用myArray[0],下面的内容非常适用于单个迭代,但一旦我尝试将其转换为循环,它就不起作用了。我知道循环中的函数有一些特殊之处,但不知道解决方法是什么。
for(var x = 0; x < myArray.length; x++) {
tx.executeSql("SELECT * FROM table WHERE entryreference = '"+myArray[x].TimeStamp+"' ", [], function(tx,results){
var tempArray = [];
var len = results.rows.length;
for (var i = 0; i < len; i++){
var tempObject = {
"Value": results.rows.item(i).value
}
tempArray.push(tempObject);
}
myArray[x].embeddedArray = tempArray;
});
};
为每次迭代的循环内代码提供一个临时范围。以前的问题是x的值。对x=myArray.length-1的相同mysql查询执行myArray.length次。我想这个问题已经解决了。。。
for(var x = 0; x < myArray.length; x++) {
(function(x){
tx.executeSql("SELECT * FROM table WHERE entry reference = '"+myArray[x].TimeStamp+"' ", [], function(tx,results){
var tempArray = [];
var len = results.rows.length;
for (var i = 0; i < len; i++){
var tempObject = {
"Value": results.rows.item(i).value
}
tempArray.push(tempObject);
}
myArray[x].embeddedArray = tempArray;
});
})(x);
};
即使您成功地更正了代码,它的效率也非常低,因为您正在为myArray
中的每个值运行SQL查询。
你必须分两步完成:
-
通过迭代构建查询的WHERE部分,可能使用
IN
条件。 -
执行和处理查询。
问题是,变量"x"由循环中创建的所有回调函数共享,当实际调用回调时,"x"的值将比数组的长度大一。为了解决这个问题,您必须用另一个函数封装回调函数的构造,以便每个回调都引用要构建的"嵌入式"数组:
function makeCallback(target) {
return function(tx, results) {
var tempArray = [];
var len = results.rows.length;
for (var i = 0; i < len; i++) {
var tempObject = {
"Value": results.rows.item(i).value
}
tempArray.push(tempObject);
}
target.embeddedArray = tempArray;
};
}
for (var x = 0; x < myArray.length; x++) {
tx.executeSql("SELECT * FROM table WHERE entryreference = '" + myArray[x].TimeStamp + "' ", [],
makeCallback(myArray[x]));
};
每个回调都会获得对"myArray"元素的引用,该元素将随查询结果更新。"target"参数对于每个回调都是不同的。
相关文章:
- 在数据库中循环值时,为输入框获取唯一值
- 如何优化循环以插入到数据库中
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 如何确保在 Mocha 中的 done() 之前执行对数据库的循环保存
- js-循环遍历数据库中的切片字符串和检查项
- 循环中的本地数据库sql查询
- 倒计时秒数,更新数据库并循环倒计时
- javascript:我希望根据从数据库中获取的循环更改单选按钮操作
- 在 PHP 循环中联接最近的数据库行
- 使用 jQuery 循环访问数据库中的 JSON
- Ruby 数据库对象上的 JavaScript 循环
- 每次 while 循环运行时调用 javascript,以从数据库中给出一个唯一的时间
- 在循环中未将下拉值插入数据库
- JS Noob:使用JavaScript'对于循环'将变量与数据库匹配
- 使用数组中的值在本地数据库中循环,函数在循环中
- 从循环数据库值中创建会话变量
- 如何在mongo中为.js脚本编写for循环,以便在文本文件中传递数据库名称变量
- 使用Laravel在选择下拉菜单上显示数据库中的循环输入文件
- PHP/Javascript -在while循环中从mysql数据库显示谷歌地图上的标记
- 循环遍历Firebase数据库记录的集合