我在电话间隙中链接 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();
});
});
});
};
现在发生的事情如下:
- 交易已获得,
- “您的查询”已执行,
- 获取数据后,执行“SECOND QUERY”,
- 获取数据后,执行“THIRD QUERY”,
- 获取数据后,updateRiders 会被调用。
关于javascript - 在 PhoneGap 中链接 SQLite 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541223/