我遇到了最困难的问题,这应该是一个简单的问题。我正在编写一个 chrome 扩展,它使用一个数组来存储用户的单词列表。在启动时,我检查已经过去了多少时间,以便可以将适当数量的单词添加到数组中。我在这里按照代码如何将值推送到 Chrome 存储,如下所示:
function addToWords(url) {
chrome.storage.local.get(function(cfg) {
if(typeof(cfg["myWords"]) !== 'undefined' && cfg["myWords"] instanceof Array) {
cfg["myWords"].push(url);
}
chrome.storage.local.set(cfg);
});
}
但是无论我做什么以及调用这个函数多少次,我都只会得到添加到数组中的函数的最后一次调用。例如,如果这是我要开始的“myWords”数组:
["dog"]
然后我打电话给
addToWords("horse");
addToWords("bird");
addToWords("pig");
addToWords("cat");
我会留下一个包含两个项目的数组,[“dog”,“cat”]。我没有看到的代码有问题吗?谢谢
编辑:对于在设置异步回调方法后遇到同样问题的任何人,请注意 storage.local 和 storage.sync!异步不起作用,因为我在控制台中设置本地并检查同步(这就是新值不存在的原因)。感谢大家的帮助。异步建议和使用相同的存储使其完美运行!