是否可以在同一交易中嵌套句子?

时间:2013-02-27 17:31:06

标签: javascript html5 sqlite asynchronous web-sql

我目前正在使用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                  
            }   
        );

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

  1. ttx相同吗?
  2. 我可以使用t执行另一个SQL语句,在这种情况下#1保证在#2之前运行吗?

2 个答案:

答案 0 :(得分:1)

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

  2. 是的,在2#之前运行1#是受让人,因为你已经听过onccess访问处理程序回调。我想实现请求的排序,我使用t。每当我想让然后并行运行时,我使用tx。请参阅我的websql request executor实施YDN-DB库中的代码。

答案 1 :(得分:0)

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

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