私はJavaScript主導のサイトで作業しており、特定の順序で実行する必要のあるものがたくさんあります。多くのものには、アニメーションとAJAXの読み込みが含まれます。一部の擬似コードは次のようになります。
- JSON形式のデータを読み込む
- ロードされたJSONデータを使用してHTML要素を生成し、それらをdiv内にレンダリングします
- jQuery UIスライダーを使用して、div内の要素をスクロール可能にします
- 1からロードされた要素の総数までの数値をランダム化します
- jQuery UIスライダーを500ミリ秒の間、ランダム化された数値を表す要素までスクロール(アニメーション化)させます
- より多くのJSON形式のデータをロードする
- ページ上の他の要素を置き換えます
- 等々...
この各ステップは関数にラップされています。1つの関数はJSONデータをロードし、別の関数はHTML要素を生成し、3番目の関数はjQueryUIスライダーを初期化します。コードを関数にカプセル化すると、コードが読みやすくなりますが、何よりも、ページで何が起こっているかに応じて異なる順序で関数を呼び出せるようにしたいので、1つの関数が実行を終了してから次のものが実行されます。
AJAXやjQueryアニメーションを含まない通常の関数がある場合は、実行したい関数を次々に実行します。問題は、次に進む前に、アニメーションとデータ取得機能が終了するのを待つ必要があることです。jQueryのアニメーションメソッドとAJAXメソッドの両方を支援するために、コールバックを送信できます。しかし、ここで私は迷子になります。
私がやりたいことは次のとおりです。
- JSONデータをロードします。ロードが成功した場合は、続行して...
- HTML要素を生成する
- 要素をスクロール可能にする
- 1からロードされた要素の総数までの数値をランダム化し、それを...に渡します。
- jQueryスライダーを要素にスライド(アニメーション化)させる関数。アニメーションが終了したら...
- より多くのJSON形式のデータをロードします。ロードが成功した場合は、続行して...
- ページ上の他の要素を置き換えます
理想的なのは、この一連のイベントを1つの場所、たとえばイベントハンドラー内に設定できるかどうかです。関数を別の順序で呼び出したい場合、またはすべてを呼び出さない場合は、別のシーケンス/チェーンを設定するだけです。例は次のとおりです。
- 1からロードされた要素の総数までの数値をランダム化し、それを...に渡します。
- jQueryスライダーを要素にスライド(アニメーション化)させる関数。アニメーションが終了したら...
これは、各ステップのコールバックを制御する必要があることを意味します。
私が探しているものをご理解いただければ幸いです。単一の関数から実行シーケンス全体を制御したい。この機能は「オーケストラの指揮者」であり、他のすべての機能はオーケストラのさまざまな楽器セクションになります。この指揮者は、バイオリニストがソロを終えたときに聞こえ、ホーンに演奏を開始するように指示できるように、耳が必要です。申し訳ありませんが、私がやりたいことを理解しやすくなることを願っています。
前もって感謝します!/トーマス