我正在尝试进行异步调用(SELECT 语句),该调用允许我继续主线程,如以下代码所示(我需要执行顺序:“A”、2、“B”):
function test(tx) {
// Drop Table
tx.executeSql('DROP TABLE IF EXISTS city');
// Create Table
tx.executeSql("CREATE TABLE IF NOT EXISTS city (id, name)");
// Insert 2 rows
tx.executeSql("INSERT INTO city (id, name) VALUES (1, 'Roma')");
tx.executeSql("INSERT INTO city (id, name) VALUES (2, 'Bari')");
alert("A");
tx.executeSql('SELECT * FROM city', [], function (tx, results)
{
alert(results.rows.length);
}, null);
alert('B');
}
但我得到,“A”,“B”,2
如何实现执行顺序“A”、2、“B”?
谢谢。 保罗
最佳答案
这是 websql API 的一个主要问题。它在 IndexedDB API 中得到修复,以便规范定义必须放置在事务上的所有请求必须按照其放置的顺序执行。 WebSQL 没有这个条件,因此它可以按任何顺序执行。
解决方法是使用请求成功回调。 stackoverflow 中有一个线程用示例解释了这个概念。
关于javascript - Web SQL 数据库 - 执行异步调用并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19203443/