2009-07-29 8 views
1

私はfillContentを呼び出したいが、後で問題がfillContent内のすべてのAJAXが完了するまで、私はbeginEfitingQuestionを鳴らさないことですbeginEditingQuestionajax関数が終了するまでコードをスローダウンしますか?

fillContent(cid, "questions"); 
beginEditingQuestion(qid); 

と呼ばれます。コードを遅延させるエレガントな方法はありますか?私が考えることができる唯一のアイデアは、完全に新しい関数fillContentAndBeginEditingQuestionを作成してfillContentをコピーして新しい関数に貼り付け、最後のajax呼び出しでbeginEditingQuestionを追加することです。これは私にとってとてもエレガントではないようですが、私はfillContentを他のコンテキストで再利用したいと思います。私は何をすべきか?

答えて

3

fillContentにコールバックパラメータを設定させ、終了時にコールバックを呼び出させることができます。基本的には、callback()を追加するだけです。最後のfillContentの本文に挿入します。このように、あなたはこのような何かを書き、最後に実行渡された関数があるだろう:あなたは、そのパラメータの一つは、そのコールバック関数であるように、「fillContent」を変更する必要があるよう

fillContent (cid, "questions", function() { beginEditingQuestion (qid); }); 
0

をですねAJAXが返ったときに呼び出されます。

3

私はあなたが「遅くなりたい」と思っているのではなく、次の作業が始まる前に何かを待っていたいと思っています。

このパターンは、多くの言語で使用され、イベントを使用することです。概念的に

あなたは、イベントが到着したときに()beginEditingQueueに電話してくださいと言って、「DoneFillingContent」イベントへの関心を登録します。

fillContentは、すべての関係者にイベントを発行することの可能性を持っています。 beginEditingQueue()が何をしているのかはわかりませんが、完了時に行う作業のほんの一部です。

パターンの最も単純なバージョンでは、1つのコールバック関数を許可するだけです。

関連する問題