首页 > 解决方案 > React Native - SQLite 事务不等待结果

问题描述

我想从数据库(配置文件和配置等)中获取数据并在调用下一个函数之前等待数据。我期待,如果我把事务放在一个函数中,在异步函数中调用这个函数并等待,这会起作用,但它不会:

function getProfileData() {
    return db.transaction(
      tx => {
        tx.executeSql('SELECT value FROM tbl_config WHERE name="user_email"', [], (tx, results) => {
          console.log(results.rows.item(0).value);
          return results.rows.item(0).value;
      });
    }, null, null); 
}

async function fetchData() {
  console.log('before fetch')
  var res = await getProfileData();
  console.log(res);
  console.log('after fetch');
}

fetchData(); 

控制台向我显示了函数getProfileData()的结果,但在异步函数中var res = await getProfileData()是未定义的。

如何逐步获取数据?

标签: react-nativesqliteasync-await

解决方案


试试这个方法

function callback(res){
  console.log(res);
  console.log('after fetch');
}

function getProfileData() {
    return db.transaction(
      tx => {
        tx.executeSql('SELECT value FROM tbl_config WHERE name="user_email"', [], (tx, results) => {
          console.log(results.rows.item(0).value);
          callback(results.rows.item(0).value); <!-- Change here -->
      });
    }, null, null); 
}

async function fetchData() {
  console.log('before fetch')
  await getProfileData();
}

推荐阅读