gpt4 book ai didi

javascript - 避免 iPhone 超时

转载 作者:行者123 更新时间:2023-11-28 02:48:18 25 4
gpt4 key购买 nike

我正在寻找一个好的策略,从 AJAX 调用中插入大约 2500 个 id FirstName LastName 元组 (600KB)。 AJAX 调用完成后以及我将数据存储在本地存储数据库中时发生超时。数据采用 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 不支持 Web Worker。应该有一种方法可以使用 setInterval() 并一次处理多个数据,但我遇到了困难。如果您有任何想法,请告诉我。

谢谢!

最佳答案

我认为“数据”是一个数组是正确的吗?如果是这样,你可以这样做:

  ...
//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);
}
);

关于javascript - 避免 iPhone 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402012/

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