Web SQL 数据库 - 执行 asyc 调用并继续

Web SQL DataBase - Execute asyc call and continue

本文关键字:调用 继续 asyc 执行 SQL 数据库 Web      更新时间:2023-09-26

我正在尝试进行异步调用(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没有这个条件,因此它可以按任何顺序执行。

解决方法是使用请求成功回调。堆栈溢出中有一个线程,它通过示例解释了这个概念。