如果我在 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/