Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

149
Visualizações
JS: constantes para números mágicos en el contexto del trabajador del servicio

Tengo una extensión de trabajador de servicio que usa muchos valores y definiciones codificados. Por ejemplo, tenemos un protocolo propietario que define ciertos tipos de mensajes que se identifican con números enteros:

 const MsgType = { MSG_TYPE_1: 0, // not really called like this, just an example MSG_TYPE_2: 1 };

Según tengo entendido, no se puede confiar en variables globales en los trabajadores de servicios. Como tal, usar constantes para valores codificados no funcionará. JS no tiene ninguna otra forma de establecer dichos valores codificados.

Solo puedo pensar en tres formas de lidiar con esto:

1- Solo use valores codificados en todo su código. me niego a hacer esto....

2- usar funciones para devolver el valor como

 function MsgType() { return { MSG_TYPE_1: 0, MSG_TYPE_2: 1 } }

3- reemplace const con let y haga que una función reinicie todo:

 let MsgType = null; function setEveryConstantEverywhere() { if (MsgType != null) { return; } // set everything } // in code where SW is expected to wake up then call setEveryConstantEverywhere right at the start.

¿Hay otra manera? ¿Estoy entendiendo todo esto mal?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Bien, realicé algunas pruebas empíricas y ahora tengo una mejor comprensión.

1- Cada vez que se vuelve a cargar el trabajador del servicio de extensión, se evalúa el contexto global completo ANTES de que se invoquen los controladores de eventos. Esto implica que las constantes globales se están redefiniendo

2- Se puede incluir una referencia a un objeto y estará disponible en el controlador de eventos. Sin embargo, si el SW se ha reiniciado, la referencia será a la instancia recién creada y no a la configurada antes de reiniciar:

 const obj = {/*...*/}; chrome.webRequest.onBeforeRequest.addListener((context => _ => { context === obj; // true })(obj) ,/*...*/);

Intuitivamente, uno pensaría que la instancia del controlador de eventos que se llama es la que se estableció antes de detener el SW, sin embargo, esto no es así. De hecho, parece que todo se borra por completo, luego se inicializa el SW (ejecuta todo el código en el ámbito global) y solo entonces se envía el evento.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda