StorageArea.get()

从存储区检索一个或多个项目。

这是一个异步函数,它返回一个 Promise

语法

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

<storageType> 将是可写存储类型之一 - synclocalmanaged

参数

一个键 (string) 或多个键 (字符串数组, 指定默认值的 对象) 用于标识要从存储区检索的项目。如果在此处传递空对象或数组,则将检索空对象。如果传递 null 或未定义值,则将检索整个存储内容。

返回值

一个 Promise,它解析为一个 results 对象,其中包含在 keys 中找到的存储区中的所有对象。如果 keys 是一个对象,则存储区中未找到的键将使用 keys 对象中的值。

如果操作失败,则 promise 将被拒绝,并显示错误消息。

如果未设置管理存储,则将返回 undefined

警告: 当在 52 之前的 Firefox 版本中的内容脚本中使用时,browser.storage.local.get() 返回的 Promise 将使用包含一个对象的数组来履行。数组中的对象包含存储区中找到的 keys,如上所述。

当在后台上下文(后台脚本、弹出窗口、选项页面等)中使用时,Promise 将使用一个对象来正确履行。

当此 API 用作 chrome.storage.local.get() 时,它会将一个对象正确地传递给回调函数。

浏览器兼容性

BCD 表格仅在浏览器中加载

示例

假设存储包含两个项目

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