簡體   English   中英

我如何使用承諾來獲得本機反應中的 SQLite 數據庫事務的結果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM