StorageArea.get()

從儲存區域檢索一個或多個專案。

這是一個非同步函式,返回一個 Promise

語法

js
let results = browser.storage.<storageType>.get(
  keys    // null, string, object or array of strings
)

其中 <storageType> 是儲存型別之一 — synclocalsessionmanaged

引數

keys

用於識別要從儲存中檢索的項的鍵(string)或鍵(字串陣列,指定預設值的物件)。如果在此處傳遞空物件或陣列,則會檢索一個空物件。如果傳遞 null 或未定義的值,將檢索整個儲存內容。

返回值

一個 Promise,它解析為一個 results 物件,其中包含 keys 中在儲存區域中找到的每個鍵的鍵值對。當 keys 是一個物件時,儲存中未找到的任何鍵將取自 keys 物件中的預設值。

如果操作失敗,Promise 將被拒絕並附帶錯誤訊息。

如果未設定託管儲存,則返回 undefined

警告:在 Firefox 中,如果擴充套件的託管儲存尚未透過 原生清單 或使用 3rdparty 企業策略 進行配置,則在使用此函式訪問託管儲存時會丟擲異常(請參閱 Firefox bug 1868153)。可以透過捕獲錯誤來避免此問題。此問題與 storage.managed_schema 清單項缺乏支援有關(請參閱 Firefox bug 1771731)。

示例

假設儲存包含兩個專案

js
// storage contains two items,
// "kitten" and "monster"
browser.storage.local.set({
  kitten: { name: "Mog", eats: "mice" },
  monster: { name: "Kraken", eats: "people" },
});

為 Promise 定義成功和失敗處理程式

js
function onGot(item) {
  console.log(item);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

不帶 keys 引數,檢索所有內容

js
let gettingItem = browser.storage.local.get();
gettingItem.then(onGot, onError);

// -> Object { kitten: Object, monster: Object }

使用空 keys 引數,不返回任何內容

js
// with an empty array, retrieve nothing
let gettingItem = browser.storage.local.get([]);
gettingItem.then(onGot, onError);

// -> Object { }

使用物件名稱,檢索匹配項

js
let gettingItem = browser.storage.local.get("kitten");
gettingItem.then(onGot, onError);

// -> Object { kitten: Object }

使用物件名稱陣列,檢索所有匹配項

js
let gettingItem = browser.storage.local.get([
  "kitten",
  "monster",
  "grapefruit",
]);
gettingItem.then(onGot, onError);

// -> Object { kitten: Object, monster: Object }

使用以物件名稱作為鍵、預設值作為值的物件

js
let gettingItem = browser.storage.local.get({
  kitten: "no kitten",
  monster: "no monster",
  grapefruit: {
    name: "Grape Fruit",
    eats: "Water",
  },
});

// -> Object { kitten: Object, monster: Object, grapefruit: Object }

Chrome 示例

js
chrome.storage.local.get("kitten", (items) => {
  console.log(items.kitten); // -> {name:"Mog", eats:"mice"}
});

或使用 Promise

js
let gettingItem = new Promise((resolve) =>
  chrome.storage.local.get("kitten", resolve),
);
gettingItem.then(onGot); // -> Object { kitten: Object }

瀏覽器相容性

注意:此 API 基於 Chromium 的 chrome.storage API。本文件源自 Chromium 程式碼中的 storage.json