Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在同一事务中嵌套语句?_Javascript_Html_Sqlite_Asynchronous_Web Sql - Fatal编程技术网

Javascript 是否可以在同一事务中嵌套语句?

Javascript 是否可以在同一事务中嵌套语句?,javascript,html,sqlite,asynchronous,web-sql,Javascript,Html,Sqlite,Asynchronous,Web Sql,我目前正在使用WebSql的异步API。鉴于此代码: db.transaction( function (tx) { tx.executeSql("SELECT * FROM table", [], function(t, resultSet){ //Anonimous function impleme

我目前正在使用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
中的第三个参数是一个函数inplementing。这个接口中的第一个参数是另一个(在我的代码中名为t)。是否可以使用此事务对象继续执行语句?特别是:

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

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

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

  • 是,交易对象在
    t
    tx
    中相同

  • 是的,由于您已经侦听了成功处理程序回调,因此被授权人可以在2之前运行1。我想实现请求的排序,我使用
    t
    。每当我想让then并行运行时,我就使用
    tx
    。请参阅我的实现YDN-DB库中的代码


  • 那么API如何知道我何时完成了事务?例如,我可以在#1的回调中再次调用
    executeSql
    ,然后在第二个操作的回调中再次调用
    executeSql
    。事实上,我可以在
    executeSql
    回调中执行其他操作,比如连接到WS,这将延迟事务的sql组件。我甚至可以在“transaction”块中多次调用
    executeSql
    ,每次都有回调。>>API如何知道我何时完成了事务?事务在未被积极使用时提交。