Javascript sqlite数据库事务后是否未执行我的日志?为什么在db事务之前执行its?

Javascript sqlite数据库事务后是否未执行我的日志?为什么在db事务之前执行its?,javascript,android,ios,react-native,Javascript,Android,Ios,React Native,我从Sqlite表中获取数据并将其存储到react native中的数组“favoritesData”中,但问题是,db事务在日志之后执行,这意味着我得到的是一个空数组 任何人都有以下代码的解决方案 getFavorits =() => { favoritesData = [] db.transaction(tx => { tx.executeSql( 'SELECT * FROM table_favorites

我从Sqlite表中获取数据并将其存储到react native中的数组“favoritesData”中,但问题是,db事务在日志之后执行,这意味着我得到的是一个空数组

任何人都有以下代码的解决方案

getFavorits =() => {
    favoritesData = []        
    db.transaction(tx => {
        tx.executeSql(
            'SELECT * FROM table_favorites', [],
            (tx, results) => {
                len = results.rows.length;
                console.log('Total Fav = ', len);

                if (len > 0) {

                    for (let i = 0; i < results.rows.length; ++i) {
                        favoritesData.push(results.rows.item(i));
                    }
                }
            }
        );
    });
console.log("FAV DATA: ",favoritesData)
}
getFavorits=()=>{
收藏夹数据=[]
数据库事务(tx=>{
tx.executeSql(
“从表_收藏夹中选择*,[],
(发送,结果)=>{
len=results.rows.length;
log('Total Fav=',len);
如果(len>0){
for(设i=0;i
事务是异步的。它没有阻塞,因此日志记录(很可能)将在DB操作完成之前执行。您需要将日志记录移动到承诺链中。在交易完成后:

getFavorites = () => {
    favoritesData = [];
    db.transaction(tx => 
        tx.executeSql(
            'SELECT * FROM table_favorites', [],
            (tx, results) => {
                len = results.rows.length;
                console.log('Total Fav = ', len);

                for (let i = 0; i < results.rows.length; ++i) {
                    favoritesData.push(results.rows.item(i));
                }
            }
        );
    ).then(() => {
      console.log("FAV DATA: ",favoritesData)
    })
}
getFavorites=()=>{
偏好数据=[];
数据库事务(tx=>
tx.executeSql(
“从表_收藏夹中选择*,[],
(发送,结果)=>{
len=results.rows.length;
log('Total Fav=',len);
for(设i=0;i{
日志(“FAV数据:”,收藏夹数据)
})
}
或者只是在循环后记录:

getFavorites = () => {
    favoritesData = [];
    db.transaction(tx => 
        tx.executeSql(
            'SELECT * FROM table_favorites', [],
            (tx, results) => {
                len = results.rows.length;
                console.log('Total Fav = ', len);

                for (let i = 0; i < results.rows.length; ++i) {
                    favoritesData.push(results.rows.item(i));
                }
                console.log("FAV DATA: ",favoritesData)
            }
        );
    )
}
getFavorites=()=>{
偏好数据=[];
数据库事务(tx=>
tx.executeSql(
“从表_收藏夹中选择*,[],
(发送,结果)=>{
len=results.rows.length;
log('Total Fav=',len);
for(设i=0;i

此外,if(len>0)不需要,因为循环会处理它。

因为db事务是responcein的异步操作thx,例如,首先抛出编译时运行时错误[TypeError:undefined不是对象(靠近“…”)。然后(函数(){…)]@Jagdish听起来像db.transaction和/或tx.executeSql可能是基于回调的。在这种情况下,您需要提示它们或坚持第二个示例。