我正在寻找一个好的策略来从AJAX调用中插入大约2500个id firstName lastName元组(600KB)。超时发生在AJAX调用完成后以及我将数据存储在localstorage数据库中时。数据采用XML格式。我现在正在做的是通过对数据执行jQuery.each()将XML数据转换为对象,
associateNames[index] = {
firstName:jQuery(value).find("First").text(),
lastName:jQuery(value).find("Last").text(),
id:jQuery(value).find("ID").text()
};
然后我将此对象传递给创建表并插入此数据的函数。该功能的主要部分是。
query2.executeSql('CREATE TABLE directory (id unique, fullName)', [],
// On Success
function(query, result) {
jQuery.each(data, function(index, value) {
var querySQL = 'INSERT INTO directory (id, fullName) VALUES (' + value.id +
', "'+ encodeURI(value.firstName) + encodeURI(value.lastName) + '")';
query.executeSql(querySQL);
});
},
iPhone不支持网络工作者。应该有一种方法可以一次使用setInterval()和处理数据,但我遇到了困难。如果您有任何想法,请告诉我。
谢谢!
答案 0 :(得分:1)
我认为“数据”是一个数组吗?如果是这样,你可以这样做:
...
//on Success
function(query, result){
setTimeout(function(){ //just in case Ajax took a while too..
var executeBatch = function(startIndex){
for(var i = startIndex; i < startIndex+50; i++){
if(i >= data.length) return;
//do your execute query on data[i]..
}
//after short while do the next batch..
setTimeout(function(){ executeBatch(startIndex+50) }, 50);
};
executeBatch(0);
}, 100);
}
);