# These are equivalent
_.defer(fn);
setTimeout(fn, 1);
のでdefer
は、単純に1ミリ秒setTimeout
です。 は(さらにいくつかの便利な機能を持っているが、それらはここでは重要ではありません。)JavaScriptは、ループを実行している
。それはシングルスレッドですが、その実行はイベントやタイマーに基づいて開始および終了します。 JSエンジンがいくつかのコードを実行するたびに、実行ループの1回の反復が開始されます。
だから、defer
は、「次の実行ループでこのコードを実行する」と言います。
_.defer(function() { alert('after'); });
alert('before');
これは、「前」および「後」を警告します。これは、現在の実行ループが「前」の警告を終了し、その直後に新しい実行ループが開始され、「後」の警告がコードを実行するためです。
いつでもここにコードがありますが、このコードの後に発生するコードを実行したい場合は、defer
を使用します。
_.defer(functionToRunLast);
functionToRunFirst();
これはDOMを使用すると便利です。時にはそれを変更することもありますが、変更はすぐに解析またはレンダリングされません。実行ループの最後に、ブラウザがキャッチアップしてDOMを解析してレンダリングし、次の実行ループが開始され、新たにレンダリングされたDOMと対話できます。
(シナリオは、私はわからないんだけど、これはDOMの解析を遅らせる原因となるが、私は過去に私自身のプロジェクトでそれを気づいたまさに。)
それはませですDOMの準備ができました。次の実行ループはの前に発生する可能性があります。 DOMの準備ができたら、これらの概念を混同しないでください。
まあ、 '_.delay'はどうしますか?そこには答えがあります。 –
1ミリ秒待つようです。私はまだ、特定の要素がレンダリングされているなど、その要素が間違って使用されていることを知っている方法を理解できません。 – cesara
'defer'を使用しなければならなかった場所の例を投稿し、その理由を理解していないと、もっと役立つかもしれません。 –