更新: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のプロファイラーを使用するか、このようなベンチマークライブラリを利用することもできます。
長時間かかるコード(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の非同期性について詳しくは、こちらをご覧ください。