Jquery 无法调用异步并等待创建索引数据库
Jquery failing to call async and await for indexed db creation
我已经编写了以下代码来创建一个工作正常的索引数据库,但我正在按如下方式使函数异步
async function createDb() {
var request = indexedDB.open("myDB", "1")
request.onsuccess = function (e) {
return request.result; // Tried await return request.result
}
}
在我看来document.ready我调用如下
async function CreateDataBase() {
const result = await createDb();
console.log(result);
}
但有些它总是返回 null,我认为调用甚至在 async 和 await 之前就结束了。如何正确调用异步和等待。同样在创建数据库之前,我想检查数据库是否存在然后创建
我写了如下内容,我想在创建数据库之前调用它并创建它 db 不存在。
function dbExists() {
var dbExists = true;
var request = indexedDB.open("myDB");
request.onupgradeneeded = function (e) {
e.target.transaction.abort();
dbExists = false;
}
return dbExists;
}
这里有一些示例代码供您参考:
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);
我已经编写了以下代码来创建一个工作正常的索引数据库,但我正在按如下方式使函数异步
async function createDb() {
var request = indexedDB.open("myDB", "1")
request.onsuccess = function (e) {
return request.result; // Tried await return request.result
}
}
在我看来document.ready我调用如下
async function CreateDataBase() {
const result = await createDb();
console.log(result);
}
但有些它总是返回 null,我认为调用甚至在 async 和 await 之前就结束了。如何正确调用异步和等待。同样在创建数据库之前,我想检查数据库是否存在然后创建
我写了如下内容,我想在创建数据库之前调用它并创建它 db 不存在。
function dbExists() {
var dbExists = true;
var request = indexedDB.open("myDB");
request.onupgradeneeded = function (e) {
e.target.transaction.abort();
dbExists = false;
}
return dbExists;
}
这里有一些示例代码供您参考:
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);