我想编写一个函数,它将如下所示:
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)
时代码立即移动到下一行。
我该怎么办? 提前谢谢。
答案 0 :(得分:2)
事件是异步的,因此,您无法在等待响应时暂停所有其他代码执行。
一种解决方案是重构代码,以便在execute
方法中调用跟随onResult
调用的所有代码。
您还可以实现某种形式的回调框架,这样您的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
方法的任何方法中。