我有一段IndexedDB代码
GetObj = function(storeName, key, callback){
var db = indexedDB.db;
if(db){
var transaction = db.transaction([storeName], transactionType.READ_ONLY);
var obj = undefined;
transaction.oncomplete = function(event) {
if(callback){
callback(obj);
}
};
var objectStore = transaction.objectStore(storeName);
var request = objectStore.get(key);
request.onerror = function (e){
console.log("onError: in", e);
if (callback) {
callback(-1);//error
}
}
request.onsuccess = function(event) {
obj = request.result;
};
}
}
我想全局定义request.onerror函数,以便我可以为所有错误重用该函数(而不是将其复制粘贴到所有地方)。问题是如何通过回调?
答案 0 :(得分:1)
只需在更高的范围内定义它:
var onerrorHandler = function (e, callback){
console.log("onError: in", e);
if (callback) {
callback(-1);//error
}
};
然后将其用于回调:
... snip
var request = objectStore.get(key);
request.onerror = function (e) {
onerrorHandler(e, callback);
};
... snip
答案 1 :(得分:-1)
我宁愿避免使用全局错误处理程序。
如您所见,代码并没有真正减少,而是用于包含另一个包装函数。这样做时,错误堆栈跟踪不会告诉哪个请求导致错误。