react-native - 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()是未定义的。
如何逐步获取数据?
解决方案
试试这个方法
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();
}
推荐阅读
- python - 提前应用带有目标函数 args 的函数,并获取要应用于该目标函数的返回结果
- linux - Nagios Check NRPE 和 Executing scripts 显示不同的输出
- bash - 使用带引号的字符串的 bash set 命令
- macos - macOS 电子构建失败 AppStore 提交并显示“退出代码:173”
- c++ - 浏览 CLion 层次视图中的用法并打开字段和构造函数的层次视图
- c# - 如何使用 EPPlus 从 excel 中删除空白列
- jenkins - 无法在 Hygieia 构建小部件中查看 Jenkins 构建信息数据
- java - 使用已经存在的 Foo 注入 Bar
- react-hooks - 没有样板的 React 自定义钩子用于关闭
- reporting-services - 条件颜色的 SSRS 切换功能