Обновление : Chrome 58+ скрыл эти и другие сообщения отладки по умолчанию. Чтобы отобразить их, нажмите стрелку рядом с «Информация» и выберите «Подробно».
Chrome 57 по умолчанию включил «скрыть нарушения». Чтобы включить их снова, необходимо включить фильтры и снять флажок «скрывать нарушения».
внезапно появляется, когда кто-то еще участвует в проекте
Я думаю, что вы, скорее всего, обновили Chrome 56. Это предупреждение - замечательная новая функция, на мой взгляд, пожалуйста, отключайте ее, только если вы в отчаянии и ваш оценщик уберет у вас оценки. Основные проблемы есть в других браузерах, но браузеры просто не сообщают вам, что есть проблема. Билет Chromium здесь, но на самом деле нет никакой интересной дискуссии по нему.
Эти сообщения являются предупреждениями, а не ошибками, потому что это не вызовет серьезных проблем. Это может привести к тому, что кадры будут пропущены или иным образом вызвать менее гладкое впечатление.
Тем не менее, их стоит изучить и исправить, чтобы улучшить качество вашего приложения. Это можно сделать, обращая внимание на обстоятельства, при которых появляются сообщения, и проводя тестирование производительности, чтобы определить причину возникновения проблемы. Самый простой способ начать тестирование производительности - вставить такой код:
function someMethodIThinkMightBeSlow() {
const startTime = performance.now();
// Do the normal stuff for this function
const duration = performance.now() - startTime;
console.log(`someMethodIThinkMightBeSlow took ${duration}ms`);
}
Если вы хотите стать более продвинутым, вы также можете использовать профилировщик Chrome или использовать такую библиотеку для сравнения, как эта .
Как только вы нашли некоторый код, который занимает много времени (50 мс - порог Chrome), у вас есть несколько вариантов:
- Вырежьте часть / всю эту задачу, которая может быть ненужной
- Узнайте, как выполнить ту же задачу быстрее
- Разделите код на несколько асинхронных шагов
(1) и (2) может быть трудным или невозможным, но иногда это действительно просто и должно быть вашими первыми попытками. При необходимости это всегда можно сделать (3). Для этого вы будете использовать что-то вроде:
setTimeout(functionToRunVerySoonButNotNow);
или
// This one is not available natively in IE, but there are polyfills available.
Promise.resolve().then(functionToRunVerySoonButNotNow);
Вы можете прочитать больше об асинхронной природе JavaScript здесь .