我正在处理的数据库应用程序遇到一些问题。似乎我的 javascript 函数在我的 SQL 事务完成之前继续进行。下面是我所经历的一个非常简化的版本。在实际函数中,我试图在移至 for 循环中的下一个值之前对表做一些工作。它似乎在 for 循环中做所有事情,然后完成 SQL 事务。
这是示例代码:
function fillTables(){
db.transaction(function (tx){
for(var i=0; i<3; i++){
console.log('Filling row '+i);
tx.executeSql(
'INSERT INTO Numbers (Value) VALUES (?)',
[i],
function (){
console.log('Inserted Row');
},
errorCB);
console.log('moving on...');
}
});
}
我希望看到的控制台日志是:
Filling Row 0
Inserted Row
moving on...
Filling Row 1
Inserted Row
moving on...
Filling Row 2
Inserted Row
moving on...
但是,我得到:
Filling row 0
moving on...
Filling row 1
moving on...
Filling row 2
moving on...
Inserted Row
Inserted Row
Inserted Row
关于如何实现预期结果的任何想法?