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