我的js脚本计算大量数据。例如,sql.js更新我的sqlite数据库。我想创建一个带有进度条和文本的回调函数。但是html网页中的文本总是在所有计算完成之前不会更新。
$array.each(function(index){
// CODE CODE CODE
$("#pbData").text(index + ' PROGRESS');
add_line_to_db(db,table_name,name,text);
// CODE CODE CODE
});
我尝试使用类似以下的内容
$array.each(function(index){
// CODE CODE CODE
setTimeout(function(){$("#pbData").text(index + ' PROGRESS');},1);
add_line_to_db(db,table_name,name,text);
// CODE CODE CODE
});
但这没起到作用。
如何修复?
编辑
我正在使用sql.js脚本创建一个sqlite数据库。 该脚本循环遍历表格并将数据存储到我的数据库中。 用户想要看到表格循环的进度条。因此,我希望为每个sql请求的迭代创建回调函数。
each
循环中仍然在做以前的相同工作,所以如果这是“阻塞”的原因,那么到目前为止你还没有做任何事情——在其中添加几个setTimeout
并不会改变循环的操作。如果在这种情况下使用setTimeout
(它可能并不总是最好的解决方案),那么它被用于通过调用一个处理数据小块的函数来替换循环,并进行重复处理(有点类似递归)。 - CBroe