Javascript sqlite数据库事务后是否未执行我的日志?为什么在db事务之前执行its?
我从Sqlite表中获取数据并将其存储到react native中的数组“favoritesData”中,但问题是,db事务在日志之后执行,这意味着我得到的是一个空数组 任何人都有以下代码的解决方案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
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可能是基于回调的。在这种情况下,您需要提示它们或坚持第二个示例。