有关Promise和数据库交易的良好做法

时间:2018-08-08 14:30:37

标签: sqlite typescript recursion promise ionic3

尝试使其工作很困难,我想知道它是否是可以接受的解决方案。情况如下:

  • ionic / Sqlite / Android下的应用
  • 要在数据库中持久保存的一卷实体,
  • 每个对象由两个INSERT INTO操作组成,其中第二个插入需要前一个的ID。
  • 继续操作之前,需要(或希望)所有对象都保存在数据库中。

很难将这些实体按顺序插入。创建一个FOR循环,每次都在其中调用插入函数/方法...,并且由于每次迭代都开始了一个新的Promise而又没有结束的过程而造成混乱。因此,它尝试打开“交易内部交易”,并启动了Error。

最后,我尝试了这样的RECURSION函数:

 static loopInsert(): any {
    let db = AppModule.DataBaseInstance;
    let davez = AppModule.ObjectList.shift();
    return db.executeSql('BEGIN TRANSACTION', [])
        //blablabla
        return db.executeSql(<<INSERT-INTO COMMAND>>)
           //blablabla
            return db.executeSql(<<INSERT INTO COMMAND WITH THE ROWID OF THE               
                //blablabla
                return db.executeSql('COMMIT TRANSACTION', [])
                //blablabla
                return db.executeSql('ROLLBACK', [])
                //blablabla
            ContaUsr.loopInsert() << AGAIN!!!!

在这里,DataBaseInstance和要保留在数据库中的对象列表不在函数范围之内,甚至在Class之外。每次递归函数被调用时,我都会咬掉一个ObjectList,直到没有对象离开。

通过这样的过程,我终于可以将所有Promises链接起来,并且只有在我认为需要时,在将所有对象存储在数据库中之后才能继续执行。

这太奇怪了吗? 预先感谢。

0 个答案:

没有答案
相关问题