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

169
Visualizações
¿Por qué esta función congela algunas PC?

Tengo una función para saber a qué hora y días exactos trabaja un empleado.

Esa función devuelve un valor que se usa en un selector de fechas. Como dije, solo quiero mostrar las "horas de trabajo", así que tuve que deshabilitar las horas "no laborables".

 var invalid_a = [ "2021-03-17T13:00:00.000Z", "2021-03-17T13:00:00.000Z", "2021-03-17T13:00:00.000Z", "2021-03-17T13:00:00.000Z", "2021-03-17T13:00:00.000Z", "2021-03-17T13:00:00.000Z" ]; var invalid_b = [ "2021-03-17T22:00:00.000Z", "2021-03-17T22:00:00.000Z", "2021-03-17T22:00:00.000Z", "2021-03-17T22:00:00.000Z", "2021-03-17T22:00:00.000Z", "2021-03-17T22:00:00.000Z" ]; var days_list = [ "MO", "WE", "TH", "TU", "FR", "SA" ]; var comb = invalid_a.map(function combineTitleData(dataItem, index) { let y = new Date(dataItem); let mins = y.getMinutes() + 59; return { start: '00:00', end: '' + y.getHours() - 1 + ':' + '' + mins + '', recurring: { repeat: 'weekly', weekDays: days_list.toString() } }; }); var comb2 = invalid_b.map(function combineTitleData(dataItem, index) { return { start: '' + new Date(dataItem).getHours() + ':' + '01', end: '23:59', recurring: { repeat: 'weekly', weekDays: days_list.toString() } }; }) console.log(comb); console.log(comb2);

Cuando pruebo que esto funciona bien, algunos usuarios (un par de ellos) informaron que el navegador se congela cuando se ejecuta esta función, aparece una ventana emergente con: "La página no responde": puede esperar a que responda o salir de la página.

Sé que esta es la función que causa esto porque cuando deshabilité este código en la página y lo intenté nuevamente, todo funcionaba bien.

¿Por qué esta función está causando esto en algunos navegadores/clientes? ¿Hay alguna forma diferente de mapear las fechas con mi salida esperada que no cause errores en el navegador?

Gracias.

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

0

Al igual que la respuesta de @ArkyAsmal , le aconsejo que use trabajadores web o, más fácilmente, si su matriz se compone de millones de entradas, simplemente agregue un poco de tiempo de espera para vaciar el subproceso de la interfaz de usuario cada ~ 10k iteraciones:

  • Transforma tu map en un bucle for
  • Crear un contexto asíncrono
  • Use await new Promise(res => setTimeout(res, 5)) si i% 1E5 === 0
about 4 years ago · Juan Pablo Isaza Relatório

0

Esto parece ser un problema de rendimiento. La complejidad del tiempo es O(n), pero si contienen miles de puntos de datos, es un mal momento.

Javascript es un lenguaje de un solo subproceso, por lo que si hay muchos empleados/puntos de datos para calcular, el navegador esperará hasta completar este análisis de datos completo, antes de hacer cualquier otra cosa (es decir, cualquier clic en botones, enlaces, etc.).

Esto puede bloquear la interfaz de usuario si hay muchos puntos de datos, lo que hace que la página no responda.

Este es en realidad un gran candidato para la programación javascript asíncrona.

Soluciones:

  1. Use web.worker api para usar subprocesos de CPU adicionales para hacer este cálculo. De forma predeterminada, esto hace que estas funciones sean asíncronas.

  2. Convierta estas funciones en promesas de JavaScript, lo que permite que la interfaz de usuario aún responda, porque los cálculos de la función se descargan.

Aquí hay un buen recurso si desea consultar: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

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