Atualização : o Chrome 58 ou mais oculta essas e outras mensagens de depuração por padrão. Para exibi-los, clique na seta ao lado de 'Informações' e selecione 'Detalhado'.
O Chrome 57 ativou 'ocultar violações' por padrão. Para ativá-los novamente, é necessário ativar os filtros e desmarcar a caixa "Ocultar violações".
de repente, aparece quando alguém mais envolvido no projeto
Acho que é mais provável que você tenha atualizado para o Chrome 56. Esse aviso é um recurso novo e maravilhoso. Na minha opinião, desative-o apenas se estiver desesperado e seu avaliador tirar marcas de você. Os problemas subjacentes existem nos outros navegadores, mas os navegadores simplesmente não estão dizendo que há um problema. O ticket do Chromium está aqui, mas não há realmente nenhuma discussão interessante sobre ele.
Essas mensagens são avisos em vez de erros, porque realmente não causam grandes problemas. Isso pode causar queda de quadros ou causar uma experiência menos suave.
No entanto, vale a pena investigar e corrigir para melhorar a qualidade do seu aplicativo. A maneira de fazer isso é prestando atenção em quais circunstâncias as mensagens aparecem e realizando testes de desempenho para diminuir onde o problema está ocorrendo. A maneira mais simples de iniciar o teste de desempenho é inserir um 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`);
}
Se você quiser se tornar mais avançado, também pode usar o criador de perfil do Chrome ou fazer uso de uma biblioteca de benchmarking como esta .
Depois de encontrar algum código que está demorando muito (50 ms é o limite do Chrome), você tem algumas opções:
- Corte algumas / todas as tarefas que podem ser desnecessárias
- Descubra como executar a mesma tarefa mais rapidamente
- Divida o código em várias etapas assíncronas
(1) e (2) pode ser difícil ou impossível, mas às vezes é realmente fácil e deve ser sua primeira tentativa. Se necessário, sempre deve ser possível (3). Para fazer isso, você usará algo como:
setTimeout(functionToRunVerySoonButNotNow);
ou
// This one is not available natively in IE, but there are polyfills available.
Promise.resolve().then(functionToRunVerySoonButNotNow);
Você pode ler mais sobre a natureza assíncrona do JavaScript aqui .