4

在此代码中,外部 sqlite 查询首先完成其工作,然后进入内部 sqlite 查询请解释它为什么会发生并给出我的要求的解决方案。

/*Outer Sqlite Query*/
 db.transaction(function(transaction){
 transaction.executeSql('SELECT * FROM OuterTable;', [], 
 function(transaction,results){
   if (results != null && results.rows != null) { 
     for (var i = 0; i < results.rows.length; i++) {
      /*My work is going here*/             

       /*Inner Sqlite Query   Inside lor loop*/
       db.transaction(function(transaction){        
   transaction.executeSql('SELECT * FROM MyInnerTable;',[],
   function(transaction, result){
   if (result != null && result.rows != null)  {                                   
         for (var j = 0; j < result.rows.length; j++) {
              /* My Work is Going here */
           }
            }
     },errorHandler);
     } ,errorHandler,nullHandler);
       /*Inner Sqlite End Here*/                 
                        }
                      }
                   },errorHandler);
                  }
                  ,errorHandler,nullHandler);
           /*Outer Sqlite End Here*/  

问题是这里
首先---> 外部 Sqlite 工作正在执行,然后内部 Sqlite 工作正在执行,但我的要求就像外部 Sqlite 的每个值一样,内部 Sqlite 将起作用

例如: -

for(int i=0;i<=10;i++){
     for(int j=0;j<=10;j++){
   // here inner for loop will work for every value of outer for loop

   }
 } 

提前致谢

4

1 回答 1

0

您对每个外部查询执行内部查询的要求无法像这样实现。由于 SELECT 查询是异步调用。

即使是外部 for 循环也不会等待您在前一个索引处的查询完成。它将继续执行并同时触发 SELECT 查询。

但是,要实现这一点,您可以使用递归。

在每个外循环调用select查询的地方,成功回调实现了内查询,内查询的成功回调以所需的索引递归调用内查询所需的次数并发布次数(inner loop for condition ) 它将调用具有递增索引的外部查询实现者。

希望有帮助。

于 2013-09-13T08:52:29.513 回答