javascript - 在 PhoneGap 中链接 SQLite 调用

标签 javascript sqlite cordova asynchronous race-condition

我在电话间隙中链接 SQLite 调用以实现同步,如下所示:

db.transaction(initDB, errorCB, function() {
                db.transaction(lookupContactDB, errorCB, function() {
                    db.transaction(contactUpdateDB, errorContactCB, function() {
                        db.transaction(lookupUpdatedDB, errorUpdateCB, function() {
                            updateRiders();
                        })
                    })
                })
            });

但是很明显,成功回调正在返回我们的顺序。这是怎么回事,下一个事务只能在调用前一个事务的成功回调时才开始。我错过了什么吗?

最佳答案

我认为在这种情况下,您不应该在其他交易中进行新交易。相反,您可能想要的是在那里执行 SQL。所以像这样的东西可能是更好的流程

db.transaction(initDB, errorCB, function(tx) {
    tx.executeSql("YOUR QUERY", [], function(tx, results1) {
        tx.executeSql("SECOND QUERY", [], function(tx, results2) {
            tx.executeSql("THIRD QUERY", [], function(tx, results3) {
                updateRiders();
            });
        });
    });
};

现在发生的事情如下:

  1. 交易已获得,
  2. “您的查询”已执行,
  3. 获取数据后,执行“SECOND QUERY”
  4. 获取数据后,执行“THIRD QUERY”
  5. 获取数据后,updateRiders 会被调用。

关于javascript - 在 PhoneGap 中链接 SQLite 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541223/

相关文章:

ios - Cordova:有没有办法检测语音听写是否在 iOS 上结束

iphone - 点击状态栏时 Phonegap Xcode iOS 应用程序崩溃

java - 找不到 gradle 包装器

javascript - 如何在 Neo4j 2.2.x 中使用 JQuery 事务性 Cypher HTTP 端点和新的 REST API 身份验证和授权

javascript - 为什么 JavaScript V8 引擎被称为引擎?

javascript - Phonegap Sqlte :the statement callback raised an exception or statement errorcallback did not return false

javascript - Node 数组异步错误

ios - 使用 SQLite3 的基本 IOS 数据库应用程序

sqlite - 如何连接到本地 sqlite3 数据库?

sql - 使用另一个表中的数据设置默认值