this.init = function (onupgradeneeded, onsuccess) {
var openRequest = indexedDB.open(dbName);
openRequest.onupgradeneeded = function (e) {
db = e.target.result;
if (!db.objectStoreNames.contains(objectStoreName)) {
console.log('Creating the ' + objectStoreName + ' objectstore');
db.createObjectStore(objectStoreName, { keyPath: "id", autoIncrement: true });
}
};
openRequest.onsuccess = function (e) {
db = e.target.result;
db.onerror = function (event) {
// Generic error handler for all errors targeted at this database requests
console.log("Database error: " + event.target.errorCode);
};
};
};
被叫:
var idb = new Demo.IndexedDB();
idb.init();
当init函数运行时,它将以openRequest.onupgradeneeded
或openRequest.onsuccess
结束。
我想知道的是,是否可以创建一个在两个函数中都被调用的泛型回调函数。因此无论运行的两个函数中的哪一个,我都可以通过使用
知道它们何时完成idb.init(function(){
//onupgradeneeded or onsuccess completed
});
希望你能得到这个想法,否则就会很复杂。
由于
答案 0 :(得分:4)
只需传入一个回调函数,并在两种情况下调用一个回调函数:
this.init = function (onFinish) {
var openRequest = indexedDB.open(dbName);
openRequest.onupgradeneeded = function (e) {
db = e.target.result;
if (!db.objectStoreNames.contains(objectStoreName)) {
console.log('Creating the ' + objectStoreName + ' objectstore');
db.createObjectStore(objectStoreName, { keyPath: "id", autoIncrement: true });
}
onFinish();
};
openRequest.onsuccess = function (e) {
db = e.target.result;
db.onerror = function (event) {
// Generic error handler for all errors targeted at this database requests
console.log("Database error: " + event.target.errorCode);
};
onFinish();
};
};