更新对象存储在chrome扩展's本地存储
Update object stored in chrome extension's local storage
我正在开发一个chrome扩展,我将存储服务器发送的对象。例如,我将收到:
命令= {id:"1",类型:"A",大小:"B",优先级:"C"}
如果我有一个数据库,我会把它作为一行插入到表commands
中。使用chrome。存储,我在键commands
中存储这些对象的数组。
但是,当我收到服务器的新命令时,我必须从本地存储获取,更新数组,然后再次设置。我担心在获取和设置或删除已存储的命令时收到另一个命令的情况。我在考虑信号量,但我不知道这是不是一个好主意。
谁能建议我做什么?谢谢!
扩展可以使用数据库:IndexedDB(示例代码可能看起来很复杂,但在实际扩展中非常简单,例如这里的两个小函数,getStyles和saveStyle,或IDB-keyval包装器库)。
如果您想使用chrome.storage
,只需维护一个由服务器侦听器填充的全局queue
数组:
queue.push(newItem);
updateStorage();
并在chrome.storage.local.get
回调中处理:
function updateStorage() {
if (!queue.length || updateStorage.running) {
return;
}
updateStorage.running = true;
chrome.storage.local.get('commands', data => {
data.commands = [].concat(data.commands || [], queue);
queue = [];
chrome.storage.local.set(data, () => {
updateStorage.running = false;
if (queue.length) updateStorage();
});
});
}
相关文章:
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 铬扩展本地存储的澄清
- Pinterest 扩展如何存储(临时)网页中的图像,然后在 iframe 中访问它们
- 为内容脚本[Chrome扩展]获取本地存储价值的简单方法
- Chrome 扩展程序无法访问数据存储
- 将上传的图像保存到本地存储(chrome 扩展程序)
- Chrome扩展程序:将数据存储在后台
- Chrome 扩展程序是否可以利用客户端存储空间
- 将具有特定扩展名的所有文件的名称存储在字符串中的文件夹中
- Chrome扩展程序:在后台提取数据并存储在数据库中
- 具有持久数据(数据存储)的Chrome扩展程序
- Chrome扩展程序 - 加密要存储在Chrome存储中的数据
- Chrome 扩展程序:从content_script访问页面的 HTML5 本地存储
- 铬扩展存储
- 如何在 Firefox 附加 SDK 扩展中使用 'jpm run' 时将数据持久存储在 'localStorage'
- 通过 Chrome 扩展程序中的内容脚本访问本地存储
- 用于在 Chrome 扩展程序中存储用户数据的选项
- 在 Web 应用和扩展程序之间共享本地存储
- Firefox 扩展中的本地存储
- 如何全局存储扩展访问令牌