0

我目前正在使用 WebSql 的异步 API。鉴于此代码:

        db.transaction(
            function (tx) {                      
                tx.executeSql("SELECT * FROM table",
                    [],
                    function(t, resultSet){ //Anonimous function implementing SQLStatementCallback
                        t.executeSql(...); //#1 
                    }
                ); 
            },
            function (err) {
                console.error("Error in transaction");                         
            },
            function(){
                console.log("Transaction complete"); //#2                  
            }   
        );

我在规范中找不到这个。in 第三个参数executeSql是一个实现的函数SQLStatementCallback。此接口中的第一个参数是另一个SQLTransaction(在我的代码中命名为 t)。是否可以使用该事务对象继续执行语句?尤其:

  1. t一样的tx吗?
  2. 我可以t用来执行另一个 SQL 语句吗?在这种情况下,#1 可以保证在 #2 之前运行吗?
4

2 回答 2

1
  1. 是的,交易对象在 和 中是相同ttx

  2. 是的,在 2# 之前运行 1# 是被授予者,因为您已经监听了 onsuccess 处理程序回调。我想实现请求的排序,我使用t. 每当我想让然后并行运行时,我都会使用tx. 请参阅我的websql 请求执行器实现 YDN-DB 库中的代码。

于 2013-03-05T06:21:03.257 回答
0

是的,这就是 WebSQL API 的工作方式。

由于异步执行,这是在一个事务中执行多个命令的唯一方法。

于 2013-02-27T18:52:01.263 回答