StorageArea.set()
在存储区域中存储一个或多个项目,或更新已存储的项目。
当您使用此 API 存储或更新值时,storage.onChanged
事件将触发。
请注意,当在 sync
存储区域中存储项目时,浏览器会对每个扩展程序可以存储的数据量实施配额。请参阅 同步数据的存储配额。
这是一个异步函数,它返回一个 Promise
。
语法
js
let settingItem = browser.storage.<storageType>.set(
keys // object
)
<storageType>
是可写入存储类型之一 - storage.local
、storage.session
或 storage.sync
。
参数
keys
-
包含一个或多个要存储的键值对的对象。如果某个项目已存在于存储中,则更新其值。
值可以是 基本类型(例如数字、布尔值或字符串)、
Array
或Object
类型。通常无法存储其他类型,例如
Function
、Date
、RegExp
、Set
、Map
、ArrayBuffer
等。某些不支持的类型将恢复为空对象,而其他类型则会导致set()
抛出错误。行为因浏览器而异。
注意:如果您想从存储中删除键,请使用 storage.storageArea.remove
。如果您想用空值覆盖某个值,请使用 null
,即 key: null
。
返回值
一个 Promise
,如果操作成功,则以无参数的方式完成。如果操作失败,则 promise 将被拒绝并显示错误消息。
示例
js
function setItem() {
console.log("OK");
}
function gotKitten(item) {
console.log(`${item.kitten.name} has ${item.kitten.eyeCount} eyes`);
}
function gotMonster(item) {
console.log(`${item.monster.name} has ${item.monster.eyeCount} eyes`);
}
function onError(error) {
console.log(error);
}
// define 2 objects
let monster = {
name: "Kraken",
tentacles: true,
eyeCount: 10,
};
let kitten = {
name: "Moggy",
tentacles: false,
eyeCount: 2,
};
// store the objects
browser.storage.local.set({ kitten, monster }).then(setItem, onError);
browser.storage.local.get("kitten").then(gotKitten, onError);
browser.storage.local.get("monster").then(gotMonster, onError);
浏览器兼容性
BCD 表格仅在浏览器中加载
注意:此 API 基于 Chromium 的 chrome.storage
API。此文档来自 Chromium 代码中的 storage.json
。