当前位置: 首页 > 知识库问答 >
问题:

处理数据库事务返回

姜泰宁
2023-03-14

这里我有一个函数,它应该返回秒数作为变量sec,但是return语句在数据库事务之前运行,所以我一直没有定义。我可以做些什么来确保事务在回电话之前完成。类似于onreadystatechange用于XMLHttpRequest

function getLevelSeconds (index) {
    var sec;
    db.transaction(function (tx) {tx.executeSql('SELECT * FROM SPLevelData', [], function (tx, result) {sec=result.rows.item(index).seconds;}, errorCB)}, errorCB);
    return sec;
}

共有1个答案

何博涛
2023-03-14
function getLevelSeconds (index, callback) {
    db.transaction(function (tx) {
        tx.executeSql('SELECT * FROM SPLevelData', [], function (tx, result) {
            sec=result.rows.item(index).seconds;
            typeof callback == "function" && callback(sec);
        }, errorCB);
    }, errorCB);
}

getLevelSeconds(index, function(sec) {
    alert(sec);
});

有关详细信息,请参阅JavaScript:4个asyncronys函数在继续之前依次等待对方完成?回答。

 类似资料:
  • 1、Db.tx 事务 在 Db 工具类里面,提供了一个系列的 tx(...) 方法支持数据库事务,以下是 Java 8 的 lambda 语法使用示例: Db.tx(() -> { Db.update("update t1 set f1 = ?", 123); Db.update("update t2 set f2 = ?", 456); return true; }); 以上代码中的

  • 事务的概念 事务的概念来自于两个独立的需求:并发数据库访问,系统错误恢复。 一个事务是可以被看作一个单元的一系列SQL语句的集合。 事务的特性(ACID) A, atomacity 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处

  • 问题: 怎样使用数据库事务处理? 解决: 数据库对象有一个方法“transaction”,将启动一个新的事务,并返回事务对象。这个事务对象可以使用commit提交事务或rollback来回滚事务。 import web db = web.database(dbn="postgres", db="webpy", user="foo", pw="") t = db.transaction() try

  • 一、Attach数据库: ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需要在表名前加数据库名,如dbname.table_name。最后需要说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的。见如下示例:

  • 当使用事务处理时,需要创建 Session 对象。在进行事务处理时,可以混用 ORM 方法和 RAW 方法,如下代码所示: func MyTransactionOps() error { session := engine.NewSession() defer session.Close() // add Begin() before any action

  • 启动事务 $this->db->start(); Swoole::$php->db('slave2')->start(); 提交事务 $this->db->commit(); Swoole::$php->db('slave2')->commit(); 回滚事务 $this->db->rollback(); Swoole::$php->db('slave2')->rollback();