所以,我试图关注这个https://developer.chrome.com/extensions/storage#property-local文档,但是值[类别]没有被设置操作更新,任何人都知道这里发生了什么? g是一个全局对象,g [category]递增到click事件。
//assume someNum has already been stored as a 0
var g = {someNum:0};
var category = "someNum";
g[category]++;
chrome.storage.local.set({category:g[category]}, function () {
console.log(g[category]); // 1
chrome.storage.local.get(category, function (value) {
console.log(value[category]); // 0
});
});
答案 0 :(得分:2)
chrome.storage调用是异步的。您需要将get调用放在set调用的回调函数中。
api没有任何问题,我在大多数扩展程序中使用它。
这是一个适用于开发者控制台的示例:
var randm = Math.random();
console.log("pre: " + randm);
chrome.storage.local.set({r: randm}, function(){
chrome.storage.local.get("r", function(st){
console.log("post: " + st.r);
randm = 1;
console.log("are they the same? " + (st.r == randm ? "yes" : "no"));
});
});
您的代码也适用于我,如下所示:
chrome.storage.local.set({category:g[category]}, function () {
console.log(g[category]); // 1
chrome.storage.local.get("category", function (value) {
console.log(value.category); // 1
});
});
答案 1 :(得分:0)
那些get
和set
函数是异步的。如果您从chrome.storage.local.get
的回调中拨打set
,您是否还有这个问题?
答案 2 :(得分:0)
由于类别是变量(在您的情况下为var category = "someNum"
),因此您需要使用:
chrome.storage.local.set({[category]: g[category]}, function() {...
或(如果您在2016年之前使用Chrome,则
var obj={};
obj[category] = g[category];
chrome.storage.local.set(obj, function() {...