Pembaruan : Chrome 58+ menyembunyikan pesan debug ini dan lainnya secara default. Untuk menampilkannya, klik panah di sebelah 'Info' dan pilih 'Verbose'.
Chrome 57 mengaktifkan 'sembunyikan pelanggaran' secara default. Untuk mengaktifkannya kembali, Anda perlu mengaktifkan filter dan hapus centang pada kotak 'sembunyikan pelanggaran'.
tiba-tiba muncul ketika orang lain terlibat dalam proyek
Saya pikir kemungkinan besar Anda memperbarui ke Chrome 56. Peringatan ini adalah fitur baru yang luar biasa, menurut saya, harap matikan saja jika Anda putus asa dan penilai Anda akan mengambil nilai dari Anda. Masalah yang mendasarinya ada di browser lain tetapi browser tidak memberitahu Anda ada masalah. Tiket Chromium ada di sini tetapi sebenarnya tidak ada diskusi yang menarik tentangnya.
Pesan-pesan ini adalah peringatan bukan kesalahan karena itu tidak benar-benar akan menyebabkan masalah besar. Ini dapat menyebabkan frame terjatuh atau menyebabkan pengalaman yang kurang mulus.
Mereka layak diselidiki dan diperbaiki untuk meningkatkan kualitas aplikasi Anda. Cara untuk melakukan ini adalah dengan memperhatikan keadaan pesan apa yang muncul, dan melakukan pengujian kinerja untuk mempersempit di mana masalah terjadi. Cara paling sederhana untuk memulai pengujian kinerja adalah dengan memasukkan beberapa kode seperti ini:
function someMethodIThinkMightBeSlow() {
const startTime = performance.now();
// Do the normal stuff for this function
const duration = performance.now() - startTime;
console.log(`someMethodIThinkMightBeSlow took ${duration}ms`);
}
Jika Anda ingin menjadi lebih maju, Anda juga bisa menggunakan profiler Chrome , atau menggunakan perpustakaan benchmark seperti ini .
Setelah Anda menemukan beberapa kode yang membutuhkan waktu lama (50ms adalah ambang Chrome), Anda memiliki beberapa opsi:
- Hentikan sebagian / semua tugas itu yang mungkin tidak perlu
- Cari tahu bagaimana melakukan tugas yang sama lebih cepat
- Bagilah kode menjadi beberapa langkah asinkron
(1) dan (2) mungkin sulit atau tidak mungkin, tetapi kadang-kadang sangat mudah dan harus menjadi upaya pertama Anda. Jika perlu, itu harus selalu memungkinkan untuk dilakukan (3). Untuk melakukan ini, Anda akan menggunakan sesuatu seperti:
setTimeout(functionToRunVerySoonButNotNow);
atau
// This one is not available natively in IE, but there are polyfills available.
Promise.resolve().then(functionToRunVerySoonButNotNow);
Anda dapat membaca lebih lanjut tentang sifat asinkron dari JavaScript di sini .