JavaScript はシングル スレッド言語であるため、一度に 1 つのコマンドを実行します。非同期プログラミングは、ブラウザーによって管理されるWeb API (イベント処理用の DOM、AJAX 呼び出し用の XMLHttpRequest、setTimeout 用の WindowTimers ) およびイベント キューを介して実装されています。ここまでは順調ですね!次の非常に単純なコードを考えてみましょう。
$('#mybox').hide(17000);
console.log('Previous command has not yet terminated!');
...
誰かが上記の根底にあるメカニズムを私に説明してもらえますか? .hide() はまだ終了しておらず (アニメーションは 17 秒続きます)、JS エンジンはそれを処理しており、一度に 1 つのコマンドを実行できるため、次の行に移動して、残りのコード?
あなたの答えがアニメーションがプロミスを作成するというものである場合、質問は同じままです: JavaScript が同時に複数のことを処理する方法 (アニメーション自体を実行し、プロミスの場合はアニメーション キューを監視し、それに続くコードを続行します。 ..)。
さらに、コードの実行と同時に残りのコードが実行されることを意味する解決または拒否されるまで、親の Deferred オブジェクト を監視する必要がある場合、jQuery のプロミスがどのように機能するかを説明できません。シングルスレッドのアプローチでそれはどのように可能ですか? AJAX呼び出しを理解するのに問題はありません.JSエンジンから取り除かれていることを知っています...