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

185
Visualizações
Evento asíncrono en la pestaña Cerrar

Estoy buscando una solución sólida para llevar a cabo un evento asíncrono en una pestaña de cierre en JavaScript

Por contexto, tengo un sitio con varias (miles) de páginas que solo deberían permitir que un usuario edite una página a la vez (es decir, dos usuarios no pueden escribir en la misma página a la vez). Entonces, cuando un usuario abre una página, realizo una llamada de fetch para establecer un indicador de base de datos para esa página para marcarla como bloqueada.

Idealmente, cuando se cierra la pestaña/ventana o se deja la página, necesito desactivar esa bandera bloqueada; llamando a otro evento de fetch asíncrona para hacerlo. Estoy familiarizado con window.onunload y window.onbeforeunload y actualmente los uso para intentar llamar a la fetch para lograr esto, pero parece que esto solo funciona aproximadamente la mitad del tiempo. La otra mitad del tiempo, la página nunca desactivará el bloqueo, lo que causa problemas importantes cuando otros usuarios necesitan acceder a la página después

Mi código:

 window.addEventListener('beforeunload', (ev) => { ev.preventDefault(); if (condition) { postToURL(`/url/to/unlock/page`); //postToURL is a custom function that essentially calls 'fetch'. Using the 'await' keyword seemed to have no effect here } return; });

Mi pregunta es, ¿hay una manera más consistente de hacer esto? Con un sitio que requiere que varios usuarios abandonen y abran constantemente estas páginas, necesito una forma más precisa de manejar esto. ¡Cualquier ayuda sería muy apreciada, gracias!

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

0

La API Beacon se creó para este escenario. Enviará una solicitud independiente del cierre de la página.

https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API

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