Jquery无法调用async并等待 IndexedDB 创建

zlhcx6iw  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(1)|浏览(202)

我已经编写了以下代码来创建一个 IndexedDB ,该数据库工作正常,但我将函数设置为异步,如下所示

async function createDb() {
  var request = indexedDB.open("myDB", "1")
   request.onsuccess = function (e) {
   return request.result; // Tried await return request.result
  }
}

根据我的意见,在文件.ready下,我打电话如下

async function CreateDataBase() {
    const result = await createDb();
    console.log(result);
 }

但是它总是返回空值,我认为调用甚至在异步和等待之前就结束了。如何正确地调用异步和等待。在创建数据库之前,我还想检查数据库是否存在,然后创建
我写了如下,我想在创建数据库之前调用它,并创建它,数据库不存在。

function dbExists() {
var dbExists = true;
var request = indexedDB.open("myDB");
request.onupgradeneeded = function (e) {
    e.target.transaction.abort();
    dbExists = false;
}
return dbExists;
}
xzabzqsa

xzabzqsa1#

下面是一些示例代码:

function open(name, version) {
  return new Promise((resolve, reject) => {
    const request = indexedDB.open(name, version);
    request.onsuccess = (event) => resolve(event.target.result);
    request.onerror = (event) => reject(event.target.error);
  });
}

open('myDatabase', 1).then(db => {
  console.log('opened database');
  // do stuff here with db
}).catch(console.error);

相关问题