IndexedDB 非同步API概述
本文目的是強調一下IndexedDB中的API大多數是非同步的,如果對此已經掌握,略過此文。
也就是說呼叫一個方法之後,直接返回的並不是我們最終的目的結果。
原理與AJAX的XMLHttpRequest物件請求類似,返回的並不是AJAX請求的最終目的值。
對資料庫的讀取或者寫入操作都是以非同步方式進行的,步驟大致如下:
(1).首先,通過API傳送一個對資料庫的操作請求。
(2).此事API的返回值並不是最終的目的結果,而是一個請求物件。
(3).然後通過請求物件上的事件監聽請求的完整狀態,來做出不同的操作。
下面通過程式碼例項對IndexedDB 非同步API進行一下簡單演示。
一.開啟資料庫:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> let request = window.indexedDB.open("antzone", 1); request.onsuccess = (ev) => { // let db = this.result; console.log(ev.target); let db = ev.target.result; } request.onerror = (ev) => { // code } </script> </head> <body> <p>上述程式碼開啟一個名為"antzone"</p> </body> </html>
上述程式碼執行效果截圖如下:
程式碼分析如下:
(1).上述程式碼可以開啟一個名稱為"antzone"資料庫。
(2).方法open是非同步的,它的返回值並不是開啟的資料庫,而是一個IDBOpenDBRequest型別請求物件。
(3).通過此物件上的success或者error等事件可以監聽方法的執行狀態。
(4).如果開啟成功,那麼觸發success事件,request物件的result屬性返回我們所開啟的資料庫。
由此可以看到開啟資料庫是一個非同步操作,IndexedDB資料庫中的絕大多數API都是非同步的。
二.非同步操作的目的:
對於cookie或者其他Web Storage的操作都是同步的,唯獨對IndexedDB操作大多數情況都是非同步的。
這是因為IndexedDB資料庫體量要比cookie或者Web Storage大很多,比如儲存量幾乎無上限。
對於這樣的操作,如果採用同步方式,可能會導致瀏覽器卡頓現象,所以採用非同步是明智。
非同步操作的基本步驟再重複一遍:
(1).首先釋出一個資料庫操作請求。
(2).然後利用dom事件對操作請求結果進行監聽。
(3).根據不同的結果執行不同事件處理函式,然後進行不同的操作。
相關文章
- IndexedDB 資料庫概述Index資料庫
- 瀏覽器資料庫 IndexedDB(一) 概述瀏覽器資料庫Index
- 同步非同步,阻塞非阻塞非同步
- 非同步、同步、阻塞、非阻塞非同步
- 同步、非同步,阻塞、非阻塞理解非同步
- 同步、非同步、阻塞與非阻塞非同步
- 同步非同步 與 阻塞非阻塞非同步
- 理解阻塞、非阻塞、同步、非同步非同步
- java同步非阻塞IOJava
- 同步、非同步、阻塞、非阻塞的區別非同步
- IndexedDBIndex
- IO - 同步 非同步 阻塞 非阻塞的區別非同步
- 徹底搞懂同步非同步與阻塞非阻塞非同步
- kubernetes實踐之十九:API概述API
- 初探IndexedDBIndex
- 同步阻塞、同步非阻塞、多路複用的介紹
- 大白話搞懂什麼是同步/非同步/阻塞/非阻塞非同步
- socket阻塞與非阻塞,同步與非同步、I/O模型非同步模型
- Async Clipboard API:非同步剪貼簿 APIAPI非同步
- java學習(五) —— 常用API類概述JavaAPI
- indexedDB入門Index
- IndexedDB upgradeneeded 事件Index事件
- indexedDB.deleteDatabase()IndexdeleteDatabase
- indexedDB 修改索引Index索引
- IndexedDB詳解Index
- Java 非阻塞 IO 和非同步 IOJava非同步
- 怎樣理解阻塞非阻塞與同步非同步的區別?非同步
- 一篇文章讀懂阻塞,非阻塞,同步,非同步非同步
- ♻️同步和非同步;並行和併發;阻塞和非阻塞非同步並行
- 非同步 API 的設計非同步API
- Python的非同步IO:APIPython非同步API
- 併發-0-同步/非同步/阻塞/非阻塞/程式/執行緒非同步執行緒
- 聊聊執行緒與程式 & 阻塞與非阻塞 & 同步與非同步執行緒非同步
- 對於同步、非同步、阻塞、非阻塞的幾點淺薄理解非同步
- 程式執行緒、同步非同步、阻塞非阻塞、併發並行執行緒非同步並行
- 如何解讀 Java IO、NIO 中的同步阻塞與同步非阻塞?Java
- 從同步原語看非阻塞同步以及Java中的應用Java
- python中非同步非阻塞如何實現Python非同步