2012-04-05 14 views
0

ローカルのsqliteやajaxリクエストから何らかの値を取得しようとすると、値が返されません。コールバックを実行する必要があります。JavaScript;非同期アクション、コールバック、再帰回数が多すぎる

私はいくつかのデータを取得して処理する非常に大きな機能を持っていますが、それをループに入れて終了するまで保持する必要があります。内部コールバックを実行する前に関数が終了しているので、そのようにすることはできません。私はコールバックを再びその機能を実行させることができますが、メモリを食べていませんか?または、親関数が終了し、内部変数とオブジェクトが破棄されたためではないでしょうか?

私の英語のために残念です。

+1

簡略化した例を投稿 – asawyer

+0

あなたのコード、または少なくともあなたのコードの手術骨格を見ることなく、本当に助けることはできません。 – jfriend00

+1

非同期イベントとコールバックの管理方法に関して、コードのアーキテクチャを再考する必要があるようです。 jQueryを使用している場合は、遅延オブジェクトAPIを見てください。このようなことを念頭に置いて設計されています。 –

答えて

0

正しく理解されている場合、複数の未処理のコールバックを繰り返すループ内で繰り返す関数にコールバックを渡すプロセスがあります。

これを解決するには、コールバックの数を保持し、コールバックが呼び出されるたびにコールバックを減らします。カウンタがゼロになったら、最終処理を行います。

カウンタが1になるように注意し、すべてのコールバックがオフになったらカウンタを減らして、カウンタが時期尚早ゼロにならないようにします。

関連する問題