2015-06-21 2 views
1

Итак, я пытаюсь выполнить эту документацию https://developer.chrome.com/extensions/storage#property-local, но значение [категория] не обновляется заданной операцией, кто-нибудь знает, что здесь происходит? g - глобальный объект, а g [категория] увеличивается до события щелчка.Хром хранение локальный набор не установлено

//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 
    }); 
    }); 

ответ

1

Хромированные вызовы асинхронны. Вы должны поместить вызов вызова внутри функции обратного вызова заданного вызова.

Ничего плохого в 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 
    }); 
}); 
+0

Категория не является строкой, это переменная, назначенная для строки, я обновил вопрос – Jacob

+0

@ user3654525 Затем вы присваиваете значение некорректно. То, как вы используете функцию set, сохраняет значение с помощью ключа «category». Создайте объект, подобный этому ответу, затем передайте его непосредственно в качестве первой переменной: http://stackoverflow.com/a/11508490/1078008 –

0

Те get и set функции являются асинхронными. Если вы вызываете chrome.storage.local.get из обратного вызова от set, у вас все еще есть эта проблема?

+0

да, я пробовал тихие несколько различных конфигураций .. в надежде получить кого-то, у кого есть пример этого API, который работает – Jacob

Смежные вопросы