Retornando o valor da API de armazenamento do Chrome sem função
Nos últimos dois dias, tenho trabalhado com armazenamento assíncrono chrome. Funciona "bem" se você tiver uma função. (Como abaixo):
chrome.storage.sync.get({"disableautoplay": true}, function(e){
console.log(e.disableautoplay);
});
Meu problema é que não posso usar uma função com o que estou fazendo. Quero apenas devolvê-lo, como o LocalStorage. Algo como:
var a = chrome.storage.sync.get({"disableautoplay": true});
ou
var a = chrome.storage.sync.get({"disableautoplay": true}, function(e){
return e.disableautoplay;
});
Eu tentei um milhão de combinações, até definindo uma variável pública e definindo que:
var a;
window.onload = function(){
chrome.storage.sync.get({"disableautoplay": true}, function(e){
a = e.disableautoplay;
});
}
Nada funciona. Tudo retorna indefinido, a menos que o código que faz referência a ele esteja dentro da função get, e isso é inútil para mim. Eu só quero poder retornar um valor como uma variável.
Isso é possível?
EDIT: Esta pergunta não é uma duplicata, permita-me explicar por que:
1: Não há outras postagens perguntando isso especificamente (passei dois dias olhando primeiro, apenas por precaução).
2: Minha pergunta ainda não foi respondida. Sim, o Armazenamento do Chrome é assíncrono e, sim, ele não retorna um valor. Esse é o problema. Vou elaborar abaixo ...
Eu preciso ser capaz de obter um valor armazenado fora da função chrome.storage.sync.get. Não posso usar localStorage, pois é específico da URL, e os mesmos valores não podem ser acessados na página de ação do navegador da extensão do Chrome e no background.js. Não consigo armazenar um valor com um script e acessá-lo com outro. Eles são tratados separadamente.
Portanto, minha única solução é usar o Chrome Storage. Deve haver alguma maneira de obter o valor de um item armazenado e referenciá-lo fora da função get. Eu preciso verificar isso em uma declaração if.
Assim como o localStorage pode fazer
if(localStorage.getItem("disableautoplay") == true);
Tem que haver alguma maneira de fazer algo ao longo das linhas de
if(chrome.storage.sync.get("disableautoplay") == true);
Sei que não será assim tão simples, mas é a melhor maneira de explicar.
Cada post que vejo diz para fazê-lo desta maneira:
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.