0

我正在使用 webSql,除了这个小东西之外,我有点想通了:假设我们有两个表(A 和 B),首先,我想插入表 A 并获取最新的 ID,我将作为辅助键插入到表 B 中。在这两种情况下,表都有自动递增 ID。

当我从底部示例中“警报(TableAId)”时,我得到了正确的值。但是,当我将它插入 TableB 时,它是空的。我认为问题可能是函数(tx,结果)是异步的,因此我在实际获得 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);
4

1 回答 1

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);
于 2013-02-10T22:31:13.467 回答