Оновлення : 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 ви можете прочитати тут .