亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 web前端 js教程 9 JavaScript庫,用於使用本地存儲

9 JavaScript庫,用於使用本地存儲

Feb 19, 2025 am 08:47 AM

9 JavaScript Libraries for Working with Local Storage

HTML5本地存儲API(Web存儲的一部分)擁有極佳的瀏覽器支持率,並在越來越多的應用程序中得到應用。它擁有簡單的API,但也存在一些類似於cookie的缺點。

過去一年左右,我遇到過不少使用localStorage API的工具和庫,因此我將它們整理到這篇文章中,並附帶一些代碼示例和功能討論。

要點

  • HTML5本地存儲API得到了廣泛支持,並在應用程序中越來越常用,但它也有一些類似於cookie的局限性。各種JavaScript庫已被開發(fā)出來以改進和擴展其功能。
  • Lockr、store.js和lscache等庫為localStorage API提供了包裝器,提供了額外的使用方法和功能。這些包括存儲不同數(shù)據(jù)類型而無需手動轉(zhuǎn)換、更深入的瀏覽器支持以及對內(nèi)存對象緩存系統(tǒng)Memcached的模擬。
  • secStore.js和localForage等一些庫提供了更專業(yè)的功能。 secStore.js通過Stanford Javascript Crypto Library增加了一層安全性,而Mozilla構(gòu)建的localForage則提供了一個使用IndexedDB或WebSQL的異步存儲API。
  • Basil.js和lz-string等其他庫提供了獨特的功能。 Basil.js是一個統(tǒng)一的localStorage、sessionStorage和cookie API,允許定義命名空間、存儲方法優(yōu)先級和默認存儲。 lz-string允許通過壓縮在localStorage中存儲大量數(shù)據(jù)。

Lockr

Lockr是localStorage API的包裝器,允許您使用許多有用的方法和功能。例如,雖然localStorage僅限於存儲字符串,但Lockr允許您存儲不同數(shù)據(jù)類型,而無需自行進行轉(zhuǎn)換:

Lockr.set('website', 'SitePoint'); // 字符串
Lockr.set('categories', 8); // 數(shù)字
Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]);
// 對象

其他功能包括:

  • 使用Lockr.get()方法檢索所有鍵值對
  • 使用Lockr.getAll()方法將所有鍵值對編譯成數(shù)組
  • 使用Lockr.flush()方法刪除所有存儲的鍵值對
  • 使用Lockr.sadd和Lockr.srem在哈希鍵下添加/刪除值

本地存儲橋接器 (The Local Storage Bridge)

一個1KB的庫,用於使用localStorage作為通信通道來促進同一瀏覽器中選項卡之間的消息交換。包含庫後,以下是您可以使用的示例代碼:

// 發(fā)送消息
lsbridge.send('my-namespace', { 
  message: 'Hello world!' 
});

// 監(jiān)聽消息
lsbridge.subscribe('my-namespace', function(data) {
  console.log(data); // 打?。?Hello world!'
});

如所示,send()方法創(chuàng)建並發(fā)送消息,subscribe()方法允許您監(jiān)聽指定的消息。您可以在這篇博文中閱讀更多關於該庫的信息。

Barn

這個庫提供了一個類似Redis的API,在localStorage之上提供了一個“快速、原子化的持久存儲層”。以下是從repo的README中獲取的示例代碼片段。它演示了許多可用的方法。

Lockr.set('website', 'SitePoint'); // 字符串
Lockr.set('categories', 8); // 數(shù)字
Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]);
// 對象

API的其他功能包括能夠使用起始/結(jié)束值獲取範圍、獲取項目數(shù)組以及壓縮整個數(shù)據(jù)存儲以節(jié)省空間。該repo包含所有方法及其功能的完整參考。

store.js

這是一個類似於Lockr的另一個包裝器,但這次通過回退提供了更深入的瀏覽器支持。 README解釋說,“store.js在可用時使用localStorage,並在IE6和IE7中回退到userData行為。沒有Flash來減慢頁面加載速度。沒有cookie來增加網(wǎng)絡請求的負擔?!?/p>

基本API在以下代碼中的註釋中進行了解釋:

// 發(fā)送消息
lsbridge.send('my-namespace', { 
  message: 'Hello world!' 
});

// 監(jiān)聽消息
lsbridge.subscribe('my-namespace', function(data) {
  console.log(data); // 打?。?Hello world!'
});

此外,還有一些更高級的功能:

var barn = new Barn(localStorage);

barn.set('key', 'val');
console.log(barn.get('key')); // val

barn.lpush('list', 'val1');
barn.lpush('list', 'val2');
console.log(barn.rpop('list')); // val1
console.log(barn.rpop('list')); // val2

barn.sadd('set', 'val1');
barn.sadd('set', 'val2');
barn.sadd('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2', 'val3']
barn.srem('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2']

GitHub repo上的README詳細介紹了瀏覽器支持的深度以及需要考慮的潛在錯誤和陷阱(例如,某些瀏覽器不允許在隱私模式下使用本地存儲)。

lscache

lscache是另一個localStorage包裝器,但具有一些額外功能。您可以將其用作簡單的localStorage API,也可以使用模擬Memcached(內(nèi)存對象緩存系統(tǒng))的功能。

lscache公開了以下方法,在代碼中的註釋中進行了描述:

// 在'website'中存儲'SitePoint'
store.set('website', 'SitePoint');

// 獲取'website'
store.get('website');

// 刪除'website'
store.remove('website');

// 清除所有鍵
store.clear();

與之前的庫一樣,這個庫也處理序列化,因此您可以存儲和檢索對象:

// 存儲對象字面量;在后臺使用JSON.stringify
store.set('website', {
  name: 'SitePoint',
  loves: 'CSS'
});

// 獲取存儲的對象;在后臺使用JSON.parse
var website = store.get('website');
console.log(website.name + ' loves ' + website.loves);

// 獲取所有存儲的值
console.log(store.getAll());

// 循環(huán)遍歷所有存儲的值
store.forEach(function(key, val) {
  console.log(key, val);
});

最後,lscache允許您將數(shù)據(jù)劃分到“桶”中??纯催@段代碼:

// 設置一個帶有2分鐘過期時間的問候語
lscache.set('greeting', 'Hello World!', 2);

// 獲取并顯示問候語
console.log(lscache.get('greeting'));

// 刪除問候語
lscache.remove('greeting');

// 刷新整個緩存項目
lscache.flush();

// 只刷新過期的項目
lscache.flushExpired();

請注意,在第二個日誌中,結(jié)果為null。這是因為我在記錄結(jié)果之前設置了一個自定義桶。一旦我設置了一個桶,在此之前添加到lscache的任何內(nèi)容都將無法訪問,即使我嘗試刷新它也是如此。只有“other”桶中的項目是可訪問或可刷新的。然後,當我重置桶時,我能夠再次訪問我的原始數(shù)據(jù)。

secStore.js

secStore.js是一個數(shù)據(jù)存儲API,它通過Stanford Javascript Crypto Library添加了一層可選的安全層。 secStore.js允許您選擇存儲方法:localStorage、sessionStorage或cookie。要使用secStore.js,您還必須包含前面提到的sjcl.js庫。

以下是一個示例,演示如何在將encrypt選項設置為“true”的情況下保存一些數(shù)據(jù):

lscache.set('website', {
  'name': 'SitePoint',
  'category': 'CSS'
}, 4);

// 從對象中檢索數(shù)據(jù)
console.log(lscache.get('website').name);
console.log(lscache.get('website').category);

請注意使用的set()方法,它傳入您指定的選項(包括自定義數(shù)據(jù))以及允許您測試結(jié)果的回調(diào)函數(shù)。然後,我們可以使用get()方法檢索該數(shù)據(jù):

lscache.set('website', 'SitePoint', 2);
console.log(lscache.get('website')); // 'SitePoint'

lscache.setBucket('other');
console.log(lscache.get('website')); // null

lscache.resetBucket();
console.log(lscache.get('website')); // 'SitePoint'

如果您想使用sessionStorage或cookie而不是secStore.js中的localStorage,您可以在選項中定義:

var storage = new secStore;
var options = {
    encrypt: true,
      data: {
        key: 'data goes here'
      }
    };

storage.set(options, function(err, results) {
  if (err) throw err;
  console.log(results);
});

localForage

這個由Mozilla構(gòu)建的庫為您提供了一個簡單的類似localStorage的API,但通過IndexedDB或WebSQL使用異步存儲。 API與localStorage(getItem()、setItem()等)完全相同,只是它的API是異步的,語法需要使用回調(diào)。

因此,例如,無論您設置還是獲取值,您都不會獲得返回值,但您可以處理傳遞給回調(diào)函數(shù)的數(shù)據(jù),並且(可選)處理錯誤:

Lockr.set('website', 'SitePoint'); // 字符串
Lockr.set('categories', 8); // 數(shù)字
Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]);
// 對象

關於localForage的其他一些要點:

  • 支持使用JavaScript Promise
  • 與其他庫一樣,不僅限於存儲字符串,還可以設置和獲取對象
  • 允許您使用config()方法設置數(shù)據(jù)庫信息

Basil.js

Basil.js被描述為一個統(tǒng)一的localStorage、sessionStorage和cookie API,它包含一些獨特且非常易於使用的功能?;痉椒梢园慈缦滤臼褂茫?/p>

// 發(fā)送消息
lsbridge.send('my-namespace', { 
  message: 'Hello world!' 
});

// 監(jiān)聽消息
lsbridge.subscribe('my-namespace', function(data) {
  console.log(data); // 打?。?Hello world!'
});

您還可以使用Basil.js來測試localStorage是否可用:

var barn = new Barn(localStorage);

barn.set('key', 'val');
console.log(barn.get('key')); // val

barn.lpush('list', 'val1');
barn.lpush('list', 'val2');
console.log(barn.rpop('list')); // val1
console.log(barn.rpop('list')); // val2

barn.sadd('set', 'val1');
barn.sadd('set', 'val2');
barn.sadd('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2', 'val3']
barn.srem('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2']

Basil.js還允許您使用cookie或sessionStorage:

// 在'website'中存儲'SitePoint'
store.set('website', 'SitePoint');

// 獲取'website'
store.get('website');

// 刪除'website'
store.remove('website');

// 清除所有鍵
store.clear();

最後,在選項對像中,您可以使用選項對象定義以下內(nèi)容:

  • 數(shù)據(jù)不同部分的命名空間
  • 要使用的存儲方法的優(yōu)先級順序
  • 默認存儲方法
  • cookie的過期日期
// 存儲對象字面量;在后臺使用JSON.stringify
store.set('website', {
  name: 'SitePoint',
  loves: 'CSS'
});

// 獲取存儲的對象;在后臺使用JSON.parse
var website = store.get('website');
console.log(website.name + ' loves ' + website.loves);

// 獲取所有存儲的值
console.log(store.getAll());

// 循環(huán)遍歷所有存儲的值
store.forEach(function(key, val) {
  console.log(key, val);
});

lz-string

lz-string實用程序允許您通過使用壓縮在localStorage中存儲大量數(shù)據(jù),並且它非常易於使用。在頁面上包含庫後,您可以執(zhí)行以下操作:

// 設置一個帶有2分鐘過期時間的問候語
lscache.set('greeting', 'Hello World!', 2);

// 獲取并顯示問候語
console.log(lscache.get('greeting'));

// 刪除問候語
lscache.remove('greeting');

// 刷新整個緩存項目
lscache.flush();

// 只刷新過期的項目
lscache.flushExpired();

請注意compress()和decompress()方法的使用。上面代碼中的註釋顯示了壓縮前後的長度值。您可以看到這將多麼有益,因為客戶端存儲總是空間有限。

正如庫文檔中所解釋的,可以選擇將數(shù)據(jù)壓縮為Uint8Array(JavaScript中一種較新的數(shù)據(jù)類型),甚至可以壓縮數(shù)據(jù)以在客戶端外部存儲。

值得一提的 (Honorable Mentions)

上述工具可能可以幫助您完成在localStorage中幾乎所有想要做的事情,但如果您正在尋找更多內(nèi)容,以下是一些您可能想要查看的更多相關工具和庫。

  • LokiJS – 一個快速、內(nèi)存中的面向文檔的數(shù)據(jù)存儲,適用於node.js、瀏覽器和Cordova。
  • AngularJS的客戶端存儲 – Angular JS的命名空間客戶端存儲。寫入localStorage,並回退到cookie。除了Angular核心之外沒有其他外部依賴項;不依賴於ngCookies。
  • AlaSQL.js – 瀏覽器的JavaScript SQL數(shù)據(jù)庫和Node.js。處理傳統(tǒng)的關聯(lián)表和嵌套JSON數(shù)據(jù)(NoSQL)。從localStorage、IndexedDB或Excel導出、存儲和導入數(shù)據(jù)。
  • angular-locker – Angular項目中本地/會話存儲的簡單且可配置的抽象,提供功能強大且易於使用的流暢API。
  • jsCache – 使用localStorage啟用JavaScript文件、CSS樣式表和圖像的緩存。
  • LargeLocalStorage – 克服各種瀏覽器缺陷,在客戶端提供大型鍵值存儲。

您知道其他庫嗎?

如果您在localStorage API或相關工具之上構(gòu)建了一些增強客戶端存儲的工具,請隨時在評論中告訴我們。

(文章剩餘部分為FAQ,已根據(jù)原文進行改寫和精簡,並保持原意)

關於JavaScript本地存儲庫的常見問題 (FAQ)

問:使用JavaScript本地存儲庫的好處是什麼?

答:JavaScript本地存儲庫提供了許多好處。它們提供了一種更有效的方式來在客戶端存儲數(shù)據(jù),這可以顯著提高Web應用程序的性能。這些庫還提供了比傳統(tǒng)數(shù)據(jù)存儲方法更高的安全級別,因為它們允許數(shù)據(jù)加密。此外,它們還為數(shù)據(jù)管理提供了更用戶友好的界面,使開發(fā)人員更容易使用本地存儲。

問:JavaScript中的本地存儲是如何工作的?

答:JavaScript中的本地存儲允許Web應用程序在Web瀏覽器中持久存儲數(shù)據(jù)。與cookie不同,本地存儲不會過期,也不會發(fā)送回服務器,這使其成為一種更有效的數(shù)據(jù)存儲方法。存儲在本地存儲中的數(shù)據(jù)會跨瀏覽器會話保存,這意味著即使關閉並重新打開瀏覽器,它仍然可用。

問:我可以將本地存儲用於敏感數(shù)據(jù)嗎?

答:雖然本地存儲提供了一種方便的方式來在客戶端存儲數(shù)據(jù),但不建議將其用於存儲敏感數(shù)據(jù)。這是因為本地存儲並非設計為安全的存儲機制。存儲在本地存儲中的數(shù)據(jù)可以使用簡單的JavaScript代碼輕鬆訪問和操作。因此,不應將密碼、信用卡號碼或個人用戶信息等敏感數(shù)據(jù)存儲在本地存儲中。

問:如何管理本地存儲中的數(shù)據(jù)?

答:管理本地存儲中的數(shù)據(jù)涉及三個主要操作:設置項目、獲取項目和刪除項目。要設置項目,您可以使用setItem()方法,該方法接受兩個參數(shù):鍵和值。要檢索項目,您可以使用getItem()方法,該方法接受鍵作為參數(shù)並返回相應的值。要刪除項目,您可以使用removeItem()方法,該方法接受鍵作為參數(shù)。

問:一些流行的JavaScript本地存儲庫有哪些?

答:有幾個流行的JavaScript本地存儲庫,包括store.js、localForage和js-cookie。 Store.js為本地存儲提供了一個簡單且一致的API,並且可在所有主要瀏覽器上運行。 LocalForage提供了一個強大的異步存儲API,並支持IndexedDB、WebSQL和localStorage。 Js-cookie是一個用於處理cookie的輕量級庫,可以在本地存儲不可用時用作後備。

問:如何檢查本地存儲是否可用?

答:您可以使用JavaScript中的簡單try/catch塊來檢查本地存儲是否可用。 window.localStorage屬性可用於訪問本地存儲對象。如果此屬性存在並且可以用於設置和檢索項目,則本地存儲可用。

問:本地存儲的存儲限制是多少?

答:本地存儲的存儲限制因不同的瀏覽器而異,但通常約為5MB。這比cookie的存儲限制(只有4KB)要大得多。但是,最好還是注意您在本地存儲中存儲的數(shù)據(jù)量,因為過多的數(shù)據(jù)可能會減慢Web應用程序的速度。

問:本地存儲可以在不同的瀏覽器之間共享嗎?

答:不可以,本地存儲不能在不同的瀏覽器之間共享。每個Web瀏覽器都有自己獨立的本地存儲,因此在一個瀏覽器中存儲的數(shù)據(jù)在另一個瀏覽器中將不可用。在設計依賴於本地存儲的Web應用程序時,這一點很重要。

問:如何清除本地存儲中的所有數(shù)據(jù)?

答:您可以使用clear()方法清除本地存儲中的所有數(shù)據(jù)。此方法不接受任何參數(shù),並將從本地存儲中刪除所有項目。使用此方法時要小心,因為它會永久刪除本地存儲中的所有數(shù)據(jù)。

問:本地存儲可以在移動設備上使用嗎?

答:可以,本地存儲可以在移動設備上使用。大多數(shù)現(xiàn)代移動Web瀏覽器都支持本地存儲,因此您可以在臺式機和移動設備上使用它來存儲數(shù)據(jù)。但是,移動設備上的存儲限制可能較低,因此在設計Web應用程序時務必考慮這一點。

以上是9 JavaScript庫,用於使用本地存儲的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

垃圾收集如何在JavaScript中起作用? 垃圾收集如何在JavaScript中起作用? Jul 04, 2025 am 12:42 AM

JavaScript的垃圾回收機制通過標記-清除算法自動管理內(nèi)存,以減少內(nèi)存洩漏風險。引擎從根對像出發(fā)遍歷並標記活躍對象,未被標記的則被視為垃圾並被清除。例如,當對像不再被引用(如將變量設為null),它將在下一輪迴收中被釋放。常見的內(nèi)存洩漏原因包括:①未清除的定時器或事件監(jiān)聽器;②閉包中對外部變量的引用;③全局變量持續(xù)持有大量數(shù)據(jù)。 V8引擎通過分代回收、增量標記、並行/並發(fā)回收等策略優(yōu)化回收效率,降低主線程阻塞時間。開發(fā)時應避免不必要的全局引用、及時解除對象關聯(lián),以提升性能與穩(wěn)定性。

如何在node.js中提出HTTP請求? 如何在node.js中提出HTTP請求? Jul 13, 2025 am 02:18 AM

在Node.js中發(fā)起HTTP請求有三種常用方式:使用內(nèi)置模塊、axios和node-fetch。 1.使用內(nèi)置的http/https模塊無需依賴,適合基礎場景,但需手動處理數(shù)據(jù)拼接和錯誤監(jiān)聽,例如用https.get()獲取數(shù)據(jù)或通過.write()發(fā)送POST請求;2.axios是基於Promise的第三方庫,語法簡潔且功能強大,支持async/await、自動JSON轉(zhuǎn)換、攔截器等,推薦用於簡化異步請求操作;3.node-fetch提供類似瀏覽器fetch的風格,基於Promise且語法簡單

JavaScript數(shù)據(jù)類型:原始與參考 JavaScript數(shù)據(jù)類型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時復制副本,因此互不影響;引用類型如對象、數(shù)組和函數(shù)存儲的是內(nèi)存地址,指向同一對象的變量會相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問題。理解這兩類差異有助於編寫更穩(wěn)定可靠的代碼。

JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等 JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等 Jul 08, 2025 pm 02:27 PM

JavaScript開發(fā)者們,大家好!歡迎閱讀本週的JavaScript新聞!本週我們將重點關注:Oracle與Deno的商標糾紛、新的JavaScript時間對象獲得瀏覽器支持、GoogleChrome的更新以及一些強大的開發(fā)者工具。讓我們開始吧! Oracle與Deno的商標之爭Oracle試圖註冊“JavaScript”商標的舉動引發(fā)爭議。 Node.js和Deno的創(chuàng)建者RyanDahl已提交請願書,要求取消該商標,他認為JavaScript是一個開放標準,不應由Oracle

React與Angular vs Vue:哪個JS框架最好? React與Angular vs Vue:哪個JS框架最好? Jul 05, 2025 am 02:24 AM

選哪個JavaScript框架最好?答案是根據(jù)需求選擇最適合的。 1.React靈活自由,適合需要高度定制、團隊有架構(gòu)能力的中大型項目;2.Angular提供完整解決方案,適合企業(yè)級應用和長期維護的大項目;3.Vue上手簡單,適合中小型項目或快速開發(fā)。此外,是否已有技術棧、團隊規(guī)模、項目生命週期及是否需要SSR也都是選擇框架的重要因素??傊?,沒有絕對最好的框架,適合自己需求的就是最佳選擇。

立即在JavaScript中立即調(diào)用功能表達式(IIFE) 立即在JavaScript中立即調(diào)用功能表達式(IIFE) Jul 04, 2025 am 02:42 AM

IIFE(ImmediatelyInvokedFunctionExpression)是一種在定義後立即執(zhí)行的函數(shù)表達式,用於變量隔離和避免污染全局作用域。它通過將函數(shù)包裹在括號中使其成為表達式,並緊隨其後的一對括號來調(diào)用,如(function(){/code/})();。其核心用途包括:1.避免變量衝突,防止多個腳本間的命名重複;2.創(chuàng)建私有作用域,使函數(shù)內(nèi)部變量不可見;3.模塊化代碼,便於初始化工作而不暴露過多變量。常見寫法包括帶參數(shù)傳遞的版本和ES6箭頭函數(shù)版本,但需注意:必須使用表達式、結(jié)

什麼是緩存API?如何與服務人員使用? 什麼是緩存API?如何與服務人員使用? Jul 08, 2025 am 02:43 AM

CacheAPI是瀏覽器提供的一種緩存網(wǎng)絡請求的工具,常與ServiceWorker配合使用,以提升網(wǎng)站性能和離線體驗。 1.它允許開發(fā)者手動存儲如腳本、樣式表、圖片等資源;2.可根據(jù)請求匹配緩存響應;3.支持刪除特定緩存或清空整個緩存;4.通過ServiceWorker監(jiān)聽fetch事件實現(xiàn)緩存優(yōu)先或網(wǎng)絡優(yōu)先等策略;5.常用於離線支持、加快重複訪問速度、預加載關鍵資源及後臺更新內(nèi)容;6.使用時需注意緩存版本控制、存儲限制及與HTTP緩存機制的區(qū)別。

處理諾言:鏈接,錯誤處理和承諾在JavaScript中 處理諾言:鏈接,錯誤處理和承諾在JavaScript中 Jul 08, 2025 am 02:40 AM

Promise是JavaScript中處理異步操作的核心機制,理解鍊式調(diào)用、錯誤處理和組合器是掌握其應用的關鍵。 1.鍊式調(diào)用通過.then()返回新Promise實現(xiàn)異步流程串聯(lián),每個.then()接收上一步結(jié)果並可返回值或Promise;2.錯誤處理應統(tǒng)一使用.catch()捕獲異常,避免靜默失敗,並可在catch中返回默認值繼續(xù)流程;3.組合器如Promise.all()(全成功才成功)、Promise.race()(首個完成即返回)和Promise.allSettled()(等待所有完成)

See all articles