Cập nhật : Chrome 58+ ẩn các thông báo gỡ lỗi này và các thông báo gỡ lỗi khác theo mặc định. Để hiển thị chúng, nhấp vào mũi tên bên cạnh 'Thông tin' và chọn 'Verbose'.
Chrome 57 bật 'ẩn vi phạm' theo mặc định. Để bật lại chúng, bạn cần bật các bộ lọc và bỏ chọn hộp 'ẩn vi phạm'.
đột nhiên nó xuất hiện khi có người khác tham gia vào dự án
Tôi nghĩ nhiều khả năng bạn đã cập nhật lên Chrome 56. Cảnh báo này là một tính năng mới tuyệt vời, theo tôi, vui lòng chỉ tắt nó nếu bạn tuyệt vọng và người đánh giá của bạn sẽ đánh dấu bạn. Các vấn đề tiềm ẩn nằm ở các trình duyệt khác nhưng các trình duyệt không cho bạn biết có vấn đề. Vé Chromium ở đây nhưng thực sự không có bất kỳ cuộc thảo luận thú vị nào về nó.
Những thông báo này là cảnh báo thay vì lỗi vì nó không thực sự gây ra vấn đề lớn. Nó có thể khiến khung hình bị rơi hoặc gây ra trải nghiệm kém mượt mà.
Tuy nhiên, chúng đáng để điều tra và sửa chữa để cải thiện chất lượng ứng dụng của bạn. Cách để làm điều này là bằng cách chú ý đến những tình huống mà các thông báo xuất hiện và thực hiện kiểm tra hiệu năng để thu hẹp nơi xảy ra sự cố. Cách đơn giản nhất để bắt đầu kiểm tra hiệu năng là chèn một số mã như thế này:
function someMethodIThinkMightBeSlow() {
const startTime = performance.now();
// Do the normal stuff for this function
const duration = performance.now() - startTime;
console.log(`someMethodIThinkMightBeSlow took ${duration}ms`);
}
Nếu bạn muốn nâng cao hơn, bạn cũng có thể sử dụng trình tạo hồ sơ của Chrome hoặc sử dụng thư viện điểm chuẩn như thư viện này .
Khi bạn đã tìm thấy một số mã mất nhiều thời gian (50ms là ngưỡng của Chrome), bạn có một vài tùy chọn:
- Cắt bỏ một số / tất cả các nhiệm vụ có thể không cần thiết
- Tìm hiểu làm thế nào để thực hiện cùng một nhiệm vụ nhanh hơn
- Chia mã thành nhiều bước không đồng bộ
(1) và (2) có thể khó khăn hoặc không thể, nhưng đôi khi nó thực sự dễ dàng và nên là những nỗ lực đầu tiên của bạn. Nếu cần, nó luôn luôn có thể làm được (3). Để làm điều này, bạn sẽ sử dụng một cái gì đó như:
setTimeout(functionToRunVerySoonButNotNow);
hoặc là
// This one is not available natively in IE, but there are polyfills available.
Promise.resolve().then(functionToRunVerySoonButNotNow);
Bạn có thể đọc thêm về bản chất không đồng bộ của JavaScript tại đây .