1

我正在尝试进行异步调用(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”?

谢谢。保罗

4

1 回答 1

-1

这是 websql API 的一个主要问题。它在 IndexedDB API 中进行了修复,因此规范定义了必须放置在事务上的所有请求必须按照放置顺序执行。WebSQL 没有那个条件,因此它可以按任何顺序执行。

解决方法是使用请求成功回调。stackoverflow 中有一个线程通过示例来解释这个概念。

于 2013-10-06T02:15:52.970 回答