Primera publicación, así que perdóname por cualquier práctica general que no haya seguido.
También soy muy nuevo en la extensión de Chrome y Javascript, así que disculpas por mi pregunta de novato.
Tengo el siguiente código, pero obtener la consola es indefinido.
function getFromStorage(key) { chrome.storage.sync.get(key, function (r) { const returnVal = r[key] console.log(returnVal) return returnVal }) } chrome.contextMenus.onClicked.addListener((selectionText) => { var Val = getFromStorage("value") console.log(Val) });Pero cuando ejecuto chrome.storage.sync.get en el oyente, funciona bien. Tengo algunos valores del almacenamiento que quiero obtener, así que pensé que una función sería mejor.
por cierto, usando Manifest V3
Gracias de antemano
El problema es que su getFromStorage no devuelve nada. Simplemente llama a una API asíncrona, luego se ejecuta la devolución de llamada y devuelve un valor en las partes internas de la API de chrome , que simplemente ignora este valor.
Dado que chrome.storage devuelve una Promesa en Chrome moderno, puede await directamente.
Tenga en cuenta que la función debe declararse como async para permitir el uso de await dentro.
async function getFromStorage(key) { return (await chrome.storage.sync.get(key))[key]; } chrome.contextMenus.onClicked.addListener(async info => { let Val = await getFromStorage('value'); console.log(Val); });