[英]How can I use a promise to get the result of a SQLite-database transaction in react native?
我正在嘗試檢查我的 SQLite 數據庫中的表是否已經存在。 有人能告訴我你怎么能保證得到結果值嗎?
let tableCount = 0;
db.transaction(transaction =>
transaction.executeSql(
"SELECT name FROM sqlite_master WHERE type='table' AND name='methods';",
[],
(_, result) => {
console.log(result.rows.length);
tableCount = result.rows.length;
},
(err) => console.log("error")
)
);
console.log(tableCount + "TEST");
所以我的問題是第二個 console.log 在第一個之前執行,它仍然打印值 0。
我認為目前它的結果是 0,有兩種方法:
async fetchData() {
let tableCount = 0;
await db.transaction(transaction =>
transaction.executeSql(
"SELECT name FROM sqlite_master WHERE type='table' AND name='methods';",
[],
(_, result) => {
console.log(result.rows.length);
tableCount = result.rows.length;
},
(err) => console.log("error")
)
);
console.log(tableCount + "TEST");
}
或者您可以使用返回的承諾:
let tableCount = 0;
db.transaction(transaction =>
transaction.executeSql(
"SELECT name FROM sqlite_master WHERE type='table' AND name='methods';",
[],
(_, result) => {
console.log(result.rows.length);
tableCount = result.rows.length;
},
(err) => console.log("error")
)
).then(() => {
console.log(tableCount + "TEST");
});
希望有幫助
感謝您的回答。 我找到了一種方法來解決這個問題,方法是根據數據庫事務的結果將我想要執行的代碼放在結果回調中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.