Estoy programando una extensión de Chrome. Funciona bien, pero tengo un problema para obtener el valor.
En la instalación, debe establecer un valor predeterminado. Pero aquí viene el problema: no puedo obtener el valor. logValue() debe dar el valor a la consola para la prueba, que toma de getValue() . En la función getValue() , funciona, pero si devuelvo el valor, no está undefined . (Detalles en la captura de pantalla a continuación.
¿Cuál es mi culpa y cómo puedo hacerlo, que el valor y el tipo en la función logValue() sea el mismo que en getValue() ?
Y lo siento por mi mal inglés :)
Aquí puede ver, en la función getValue() tiene el valor correcto (primera vez null y segunda vez la cadena del objeto. Pero si lo devuelvo a la función logValue() que reemplaza una función para trabajar con él, el valor es sólo undefined .
Y aquí está mi código:
function logValue() { var x = getValue(); y = JSON.stringify(x); console.log("Type: " + typeof (x) + "\nvalue: " + x); } function getValue() { debugger; chrome.storage.sync.get(['testObject'], function (result) { var value = result.testObject; console.log("Type: " + typeof (value) + "\nvalue: " + value); return value; }); } function setDefaultValue(data) { debugger; data = JSON.stringify(data); chrome.storage.sync.set({ 'testObject': data }, function () { console.log('Value is set to ' + data); }); } chrome.runtime.onInstalled.addListener(() => { debugger; chrome.storage.sync.set({ 'testObject': null }, function () {}); data = { "data": [{ "name": "Test1", "value": "Value1" }, { "name": "Test2", "value": "Value2" } ] }; logValue(); setDefaultValue(data); logValue(); });