我正在尝试学习IndexedDB的优点并通过documentation。作为一个Javascript noob,我无法理解一些文档。
因此,通过修改,我发现处理deleteDatabase调用的代码是:
var req = indexedDB.deleteDatabase(DB_NAME);
req.onsuccess = function () {
console.log("Deleted database successfully");
};
req.onerror = function (e) {
console.log(e.message);
};
req.onblocked = function () {
console.log('Database is blocked right now...try again later');
};
文档中的位置(甚至是VS或Sublime等工具中的智能感知,浏览器开发工具等)确实表明.onerror
事件传递了错误对象e
,但是{{ 1}}没有。
答案 0 :(得分:2)
首先,我们会查看req
类型IDBOpenRequest
的定义。
http://www.w3.org/TR/IndexedDB/#idl-def-IDBOpenDBRequest
此接口将onblocked
声明为:
attribute EventHandler onblocked;
界面扩展IDBRequest
。
http://www.w3.org/TR/IndexedDB/#idl-def-IDBRequest
此接口将onerror
属性声明为:
attribute EventHandler onerror;
现在我们将检查EventHandler
是什么。
http://www.w3.org/TR/IndexedDB/#dependencies
术语和算法文档基本URL,事件处理程序属性,事件处理程序事件类型,函数,原点,同源,结构化克隆,结构化克隆算法,任务,任务源和任务队列由HTML 5规范定义[HTML5]。
索引数据库API规范没有定义它。它使用HTML 5规范中的定义。
http://www.w3.org/TR/IndexedDB/#references
它们链接到HTML5的完整规范。
我们导航到定义EventHandler
的部分。
http://www.w3.org/TR/html5/webappapis.html#eventhandler
[TreatNonCallableAsNull]
callback EventHandlerNonNull = any (Event event);
typedef EventHandlerNonNull? EventHandler;
因此当EventHandler
不是null
时,它是一个带有Event
参数的函数。
答案 1 :(得分:0)
只需阅读Mozilla docs即可。