我正在尝试进行异步调用(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”?
感谢。 保罗
答案 0 :(得分:0)
这是websql API的一个主要问题。它修复了IndexedDB API,这样规范定义了必须放置在事务上的所有请求必须按照它放置的顺序执行。 WebSQL没有这个条件,因此可以按任何顺序执行。
解决方法是使用请求成功回调。 stackoverflow中有一个线程用示例解释概念。