За последние два дня я работал с хром-асинхронным хранилищем. Он работает "отлично", если у вас есть функция. (Как ниже):
chrome.storage.sync.get({"disableautoplay": true}, function(e){
console.log(e.disableautoplay);
});
Моя проблема в том, что я не могу использовать функцию с тем, что я делаю. Я хочу просто вернуть его, например, LocalStorage. Что-то вроде:
var a = chrome.storage.sync.get({"disableautoplay": true});
или
var a = chrome.storage.sync.get({"disableautoplay": true}, function(e){
return e.disableautoplay;
});
Я пробовал миллион комбинаций, даже устанавливая общедоступную переменную и устанавливая, что:
var a;
window.onload = function(){
chrome.storage.sync.get({"disableautoplay": true}, function(e){
a = e.disableautoplay;
});
}
Ничего не работает. Все возвращается undefined, если код, ссылающийся на него, не находится внутри функции get, и это бесполезно для меня. Я просто хочу иметь возможность возвращать значение как переменную.
Возможно ли это?
EDIT: этот вопрос не является дубликатом, пожалуйста, позвольте мне объяснить, почему:
1: Нет других сообщений, спрашивающих об этом конкретно (я провел два дня, глядя сначала, на всякий случай).
2: Мой вопрос все еще не ответил. Да, Chrome Storage является асинхронным, и да, он не возвращает значение. Это проблема. Ниже я расскажу...
Мне нужно получить хранимое значение вне функции chrome.storage.sync.get. я -cannot-use localStorage, так как он специфичен для URL-адреса, и одни и те же значения не могут быть доступны со страницы browser_action хром-расширения и background.js. Я не могу сохранить значение с помощью одного script и получить доступ к нему другим. Они рассматриваются отдельно.
Итак, мое единственное решение - использовать Chrome Storage. Должен быть какой-то способ получить значение сохраненного элемента и ссылаться на него вне функции get. Мне нужно проверить его в выражении if.
Точно так же, как localStorage может выполнять
if(localStorage.getItem("disableautoplay") == true);
Должен быть какой-то способ сделать что-то в строках
if(chrome.storage.sync.get("disableautoplay") == true);
Я понимаю, что это будет не так просто, но что лучший способ я могу объяснить.
Каждое сообщение, которое я вижу, говорит, чтобы сделать это следующим образом:
chrome.storage.sync.get({"disableautoplay": true, function(i){
console.log(i.disableautoplay);
//But the info is worthless to me inside this function.
});
//I need it outside this function.