【问题标题】:Wait until statement is completed等到语句完成
【发布时间】:2014-01-16 21:21:29
【问题描述】:

我想写一个函数,如下所示:

public function execute(sql:String) {
        sessionDBConn.open(writeSessionDB);

        createStmt.sqlConnection = sessionDBConn; 
        createStmt.text = sql; 

        createStmt.addEventListener(SQLEvent.RESULT, onResult); 
        createStmt.addEventListener(SQLErrorEvent.ERROR, onError); 

        createStmt.execute(); 
    }

我希望这个函数等到 SQLLite 语句完成。我现在只有 onResult 被调用,当语句的执行完成时,但是代码,当我执行 execute(sql) 时立即移动到下一行。

我能做什么? 提前致谢。

【问题讨论】:

    标签: actionscript-3 flash sqlite air


    【解决方案1】:

    事件是异步的,因此,您不能在等待响应时停止所有其他代码执行。

    一种解决方案是重构您的代码,以便在您的onResult 方法中调用execute 之后的所有代码。

    您还可以实现某种形式的回调框架,这样您的execute 方法将接受Function 类型的第二个参数:

    public function execute(sql:String, callback:Function) {
        sessionDBConn.open(writeSessionDB);
    
        createStmt.sqlConnection = sessionDBConn; 
        createStmt.text = sql; 
    
        createStmt.addEventListener(SQLEvent.RESULT, callback); 
        createStmt.addEventListener(SQLErrorEvent.ERROR, onError); 
    
        createStmt.execute(); 
    }
    

    然后,您可以将所有相关代码放在您传递给execute 方法的任何方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2011-12-15
      • 2012-08-15
      • 2019-11-04
      • 1970-01-01
      相关资源
      最近更新 更多