我目前正在使用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)。是否可以使用此事务对象继续执行句子?特别是:
t
与tx
相同吗?t
执行另一个SQL语句,在这种情况下#1保证在#2之前运行吗?答案 0 :(得分:1)
是的,t
和tx
中的交易对象相同。
是的,在2#之前运行1#是受让人,因为你已经听过onccess访问处理程序回调。我想实现请求的排序,我使用t
。每当我想让然后并行运行时,我使用tx
。请参阅我的websql request executor实施YDN-DB库中的代码。
答案 1 :(得分:0)
是的,这就是WebSQL API的工作方式。
由于异步执行,这是在一个事务中执行多个命令的唯一方式。