如果我在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);
... save 和 get 似乎都很成功,但在检索时我似乎只有一个空对象。我已经逐步完成了我的chrome dev工具中的代码并检查了返回的[Object] - 它不是null - 但它似乎是空的无用的,如果它的数据在我的内部某处,我似乎无法找到它。
我甚至试过这个,但没有更好的结果:
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中进行回调。我的回调正在运行 - 输入了回调函数,我看起来似乎是空的 [对象] - 它不仅仅是null。
请提供帮助,并提前致谢。
答案 0 :(得分:2)
如果不使用计算键,则不能将变量用作键,ES6中的新键。
console.log({ [ "key" + 1 ]: "value" + 1 })
使用chrome.storage:
chrome.storage.local.set({ [ "key" + 1 ]: "value" + 1 })
此外,如果要包装回调函数,则应使用promises,也可以使用async/await。