更新: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 的 profiler,或者使用像这样的基准测试库。
一旦你发现一些需要很长时间的代码(50ms 是 Chrome 的阈值),你有几个选择:
- 删除一些/所有可能不必要的任务
- 弄清楚如何更快地完成相同的任务
- 将代码分成多个异步步骤
(1) 和 (2) 可能很难或不可能,但有时真的很容易,应该是您的第一次尝试。如果需要,应该始终可以执行 (3)。为此,您将使用以下内容:
setTimeout(functionToRunVerySoonButNotNow);
或者
// This one is not available natively in IE, but there are polyfills available.
Promise.resolve().then(functionToRunVerySoonButNotNow);
您可以在此处阅读有关 JavaScript 异步特性的更多信息。