Actualización : Chrome 58+ ocultó estos y otros mensajes de depuración de forma predeterminada. Para mostrarlos, haga clic en la flecha al lado de 'Información' y seleccione 'Detallado'.
Chrome 57 activó 'ocultar violaciones' de forma predeterminada. Para volver a activarlos, debe habilitar los filtros y desmarcar la casilla 'ocultar violaciones'.
de repente aparece cuando alguien más involucrado en el proyecto
Creo que es más probable que haya actualizado a Chrome 56. Esta advertencia es una nueva característica maravillosa, en mi opinión, solo desactívela si está desesperado y su asesor le quitará las marcas. Los problemas subyacentes están allí en los otros navegadores, pero los navegadores simplemente no le dicen que hay un problema. El boleto de Chromium está aquí, pero en realidad no hay ninguna discusión interesante al respecto.
Estos mensajes son advertencias en lugar de errores porque en realidad no va a causar problemas importantes. Puede hacer que los cuadros se caigan o causar una experiencia menos fluida.
Sin embargo, vale la pena investigar y corregir para mejorar la calidad de su aplicación. La forma de hacerlo es prestando atención a las circunstancias en que aparecen los mensajes y realizando pruebas de rendimiento para reducir dónde se produce el problema. La forma más sencilla de comenzar las pruebas de rendimiento es insertar un código como este:
function someMethodIThinkMightBeSlow() {
const startTime = performance.now();
// Do the normal stuff for this function
const duration = performance.now() - startTime;
console.log(`someMethodIThinkMightBeSlow took ${duration}ms`);
}
Si desea avanzar más, también puede usar el generador de perfiles de Chrome o utilizar una biblioteca de evaluación comparativa como esta .
Una vez que haya encontrado algún código que tarde mucho tiempo (50 ms es el umbral de Chrome), tiene un par de opciones:
- Elimina parte / toda esa tarea que puede ser innecesaria
- Descubre cómo hacer la misma tarea más rápido
- Divide el código en múltiples pasos asincrónicos
(1) y (2) pueden ser difíciles o imposibles, pero a veces es realmente fácil y deberían ser tus primeros intentos. Si es necesario, siempre debe ser posible hacer (3). Para hacer esto usarás algo como:
setTimeout(functionToRunVerySoonButNotNow);
o
// This one is not available natively in IE, but there are polyfills available.
Promise.resolve().then(functionToRunVerySoonButNotNow);
Puede leer más sobre la naturaleza asincrónica de JavaScript aquí .