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

  • 在ionic / Sqlite / Android下的应用程序

  • 要在数据库中持久化的一卷实体,

  • 每个对象由两个INSERT INTO操作组成,其中第二个插入需要前一个ID .

  • 需要(或希望)所有对象在继续之前保留在数据库中 .

很难将这些实体按顺序插入 . 做了一个FOR循环,我每次调用它,插入函数/方法......并且由于每次迭代都启动了一个新的Promise而没有先前的结束 . 因此它试图打开“交易内部交易”,并启动了错误 .

最后,我尝试了一个这样的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和要保存在数据库中的对象列表是OUTSIDE函数的范围,甚至在Class之外 . 每次调用递归函数时,我就像咬掉一个ObjectList一样,直到没有任何对象离开 .

通过这样的程序,我终于可以将所有Promise链接起来,并且只有在所有对象都存储在数据库中后才能继续执行,因为我觉得我需要 .

这太奇怪了吗?提前致谢 .