javascript - 如何在Chrome本地存储获取和设置中使用动态键?

标签 javascript google-chrome google-chrome-extension

如果我在 Chrome 扩展程序中执行类似的操作,它就可以正常工作:

chrome.storage.local.set({"Foo1": dataValue});

这很好:

chrome.storage.local.get("Foo1", callback);

但是当我尝试抽象这些信息函数以便我可以针对不同情况使用不同的键名称时:

function saveLocalData(dataKey, dataValue){
    chrome.storage.local.set({dataKey: dataValue});
}
saveLocalData("Foo1", "hello foo");

...然后是这个:

function getLocalData(dataKey, callback){
    chrome.storage.local.get(dataKey, callback);
}
getLocalData(dataKey, myCallbackFunction);

...保存获取似乎都成功了,但在检索时我似乎只有一个空对象。我已经在 chrome 开发工具中单步执行了我的代码,并检查了返回的 [Object]——它不为空——但它似乎是空的且无用的,如果它在内部的某个地方有我的数据,我可以'好像没找到。

我什至尝试过这个,但没有更好的结果:

function getLocalData(dataKey, callback){
    dataKey = "\"" + dataKey + "\"";
    chrome.storage.local.get(dataKey, callback);
}

function saveLocalData(dataKey, dataValue){
    dataKey = "\"" + dataKey + "\"";
    chrome.storage.local.set({dataKey: dataValue});
}

必须有某种方法将本地存储 getter 和 setter 抽象为函数,以便我可以传入键名称和值(要保存),然后通过传入正确的键名称来检索所需的值。 Cookie 是这样工作的,但本地存储有某种我不理解的巫术。我只使用 getLocalData() 的回调函数因为我不需要在 setter 中进行回调。我的回调正在工作 - 输入回调函数,我得到看似空的 [Object] - 它不仅仅是 null。

请帮忙,提前致谢。

最佳答案

如果不使用计算键(ES6 中的新功能),变量就不能用作键。

console.log({ [ "key" + 1 ]: "value" + 1 })

使用 chrome.storage:

chrome.storage.local.set({ [ "key" + 1 ]: "value" + 1 })

此外,如果您要包装回调函数,则应该使用 promises也许还有async/await .

关于javascript - 如何在Chrome本地存储获取和设置中使用动态键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42602554/

相关文章:

html - 如何使用 PowerShell 或 C# 将网页保存到 HTML 文件中?

google-chrome-extension - 使用 Chrome 扩展跟踪用户事件

javascript - 启用具有自定义布局的数据表

javascript - 如何修补 npm 库的依赖项?

google-chrome - 在以编程方式更改内容后,Chrome 中的输入元素无法正常撤消

javascript - 从内容脚本向后台脚本发送消息会破坏 chrome 扩展

google-chrome - 是否可以创建浏览器扩展以允许传入请求?

javascript - 如何根据页面上不同对象的位置在 Javascript/Mootools 中定位箭头

javascript - Node CLI 单元测试

internet-explorer - 为什么 IE9+、Chrome 和 Opera15+ 浏览器在用户代理中将自己标识为 Mozilla?