2014-10-09 134 views
1

我想了解IndexedDB的優點,並通過documentation。作爲Javascript noob,我無法理解一些文檔。如何閱讀Javascript文檔?

所以通過修修補補,我想通了,代碼來處理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或昇華,瀏覽器的開發工具和類似工具)不它指出.onerror事件通過錯誤對象e,但.onblocked不。

+0

你可以編輯你的問題標題,以更具體的索引數據庫? – Josh 2014-10-11 02:40:50

+0

@Josh我提出了IndexedDB爲例。但我經常遇到與其他功能類似的問題。 – AngryHacker 2014-10-11 19:46:48

回答

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

+0

然後右鍵下的是,「由於歷史的原因,'onerror'處理程序有不同的論點:」哎 – guest 2014-10-09 23:25:03

+0

所以,如果我理解正確的話......比腳註指出oneerror另一個不同的歷史原因處理...有是沒有辦法推斷onblocked沒有參數,但onerror呢? – AngryHacker 2014-10-11 19:50:06

+0

我甚至不認爲腳註適用於IndexedDB。另外,根據'OnErrorEventHandlerNonNull',第一個參數應該是'Event'或'DOMString',它們都沒有'message'屬性。 'onblocked'應該有一個參數,簡單的'event'類型爲'blocked'。 – guest 2014-10-13 21:30:08