我正在使用webSql,除了这个小东西之外,我想出了一切:让我们说我们有两个表(A和B),首先,我想插入表A并得到最新的ID,我将作为secundary密钥插入表B中。在这两种情况下,表都有自动增量ID。
当我从底部示例中“警告(TableAId)”时,我得到了正确的值。但是,当我将它插入TableB时,它是空的。我认为问题可能是函数(tx,results)是异步的,因此我在实际获得TableAId之前插入到TableB中。
这里适当的解决方案是什么?
var TableAId = "";
tx.executeSql('INSERT INTO TableA (value) VALUES (?)', [myValue],
function(tx, results) {
TableAId = results.insertId;
}, errorCB);
tx.executeSql('INSERT INTO TableB (key_from_TableA) VALUES (?)', [TableAId],
function(tx, results) {
TableBId = results.insertId;
}, errorCB);
答案 0 :(得分:1)
由于它是异步的,因此在调用第二个操作之前必须等待第一个操作完成。
tx.executeSql('INSERT INTO TableA (value) VALUES (?)', [myValue],
function(tx, results) {
var TableAId = results.insertId;
tx.executeSql('INSERT INTO TableB (key_from_TableA) VALUES (?)', [TableAId],
function(tx, results) {
TableBId = results.insertId;
}, errorCB);
}, errorCB);