Una vez que se activa un evento en mi secuencia de comandos de contenido, envía una solicitud de mensaje a la secuencia de comandos de fondo y espera una respuesta.
contenido.js
chrome.runtime.sendMessage({ userId: userId }, function (response) { console.log(response); });fondo.js:
chrome.runtime.onMessage.addListener(function ( request, sender, sendResponse ) { const userId = request.userId; if (userId) { fetchData(userId).then((data) => { sendResponse({ response: data }); }); return true; } });Probé async/await, moviendo el "return true" fuera de la declaración if, pero en mi secuencia de comandos de contenido, la respuesta no está definida (aunque fetchData devuelve los datos correctos), no hay respuesta o el error "el puerto del mensaje cerró antes de que se recibiera una extensión de respuesta".
El flujo que quiero es:
El problema resultó ser el cambio de pestañas en la ventana emergente antes de que se recibiera la respuesta. Lo arreglé moviendo el comando para cambiar la pestaña emergente (window.open()) para estar en la respuesta, después de procesar los datos de respuesta.