2016-10-15 18 views
-1

$.ajax()ajax()メソッドが完全に実行され、 'ajax()'が並行して処理を続ける前に、次のステートメントが実行を開始する非同期メソッドです。hide()は、要素と次のステートメントをすぐに非表示にするため、同期メソッドです。 hide()が本当に彼の全仕事をしたときに実行されますが、私は本当にhide("slow")の場合に混乱しています。それは非同期だと思われますが、ブラウザでタイマーが設定され、すべてが自動的に実行されます(今度はhide("slow")は並行処理なし)ので、次のステートメントの実行前にそのタスク全体が実行されているので、hide("slow")も同様です同期方法、.hide( "slow")は同期または非同期メソッドですか?

私は、この同期非同期コンセプト

について非常に混乱しています誰かが私にこの概念を理解するのに役立つことはできますか?

+1

'.ajax'、' .hide'、 '.hide(slow)'には違いはありません。それらは、関数の呼び出しが完了した後に終了する何らかの種類の非同期進行中の操作をトリガーするすべての関数です。 'ajax'と' hide'の両方は、非同期操作が完了したときに実行されるコールバックを受け入れます。 – meagar

答えて

5

.hide(「遅い」)メソッドの呼び出しが同期しているが、それは、非同期処理を開始する同期またはAsyncronous方法

あります。したがって、通常は、大まかに言うと、それを「非同期メソッド」(この場合、duration引数を与えているところ)と呼びます。

hide("slow")を呼び出すと、jQueryにstartと同期して時間の経過とともにゆっくりと要素を隠す処理が行われます。 hideへの最初の呼び出しが完了した後、実際にそれを行うプロセスは非同期的に行われます。通常

方法の作業がそれへの呼び出し中にを完了した場合:(メソッド自体は同期しているが、このプロセスは、それが  —が非同期に続くのXMLHttpRequestをやっ  —を開始これもajaxの事実です。)それを同期メソッドと呼びますが、だけが後で完了する作業を開始する場合は、非同期メソッドと呼びます。技術的には、メソッド自体は非同期ではなく、それが開始するプロセス全体だけですが、...

hideもちろん、渡す引数に応じて、同期メソッドと非同期メソッドの両方があります。Ifあなたは継続時間なしでそれを呼び出します(.hide())、同期しています。期間(.hide("slow").hide(400))で呼び出すと、非同期です。

+0

これらのメソッドは非同期です。エフェクトは非同期のみです。非同期メソッドの名前を付けられますか? – beginner

+1

@beginner同じ意味で、すべての関数呼び出しは、コントロールのフローがそれらに入り、関数が戻るまで戻りません。この質問は、他のものよりも、それらの用語の誤用に関するものです。 – meagar

+1

@beginner:興味深い意味論的な点ですが、私は上記の言葉を明確にしようとしました。 –

1

また、あなたの別の質問、

私は、この同期非同期概念について非常に混乱していますため 誰かが私にこの概念を理解するのに役立つことはできますか?

コード行をデバッグし、実行が完了するまで行が次の行に渡らない場合、同じスレッドがコードの実行を完全に実行しているため、その同期操作が実行されます。

一方、実際の操作が完了する前に次の行にデバッグが渡されている場合は、上記の質問と同様に非表示の&アニメーションがバックグラウンドで異なるスレッドで実行されます次の行を実行します。

上記の質問を明確にすることを願っています。

関連する問題