Necesito ayuda con mi guión. Básicamente, mi problema es que tengo una variable declarada con nulo, luego dentro de una función cambió a algún valor y luego regresó. Pero cuando lo devuelvo, todavía regresa como nulo, no como lo configuré. ¿Alguien aquí para ayudar?
Guion:
var grade="" var gradeStyle="" var finalColor="" function getSettings(){ chrome.storage.sync.get("grade",function(res){ grade=res.grade }) chrome.storage.sync.get("gradeStyle",function(res){ gradeStyle=res.gradeStyle }) chrome.storage.sync.get("finalColor",function(res){ finalColor=res.finalColor }) return [grade,gradeStyle,finalColor] } export {getSettings};Los valores son nulos porque está asignando estas variables dentro de una función de devolución de llamada antes de devolverlas. Significa que los valores de retorno no se asignarán a las variables hasta que las promesas se resuelvan por completo. Para resolver eso, puede usar la sintaxis async-await .
async function getSettings(){ const grade = await chrome.storage.sync.get("grade").promise(); const gradeStyle = await chrome.storage.sync.get("gradeStyle").promise(); const finalColor = await chrome.storage.sync.get("finalColor").promise(); return [grade,gradeStyle,finalColor] } export {getSettings}; Tenga en cuenta que, para usar la función getSettings ahora, debe llamarla dentro de otra función async , y debe await a que le devuelvan los resultados.
EDITAR:
var response; function getSettings(){ chrome.storage.sync.get(["grade","gradeStyle","finalColor"],function(res){ response=res; }); return res; } export {getSettings};