2

JSでアプリを書こうとしています。他のサイトへの多数の ajax 呼び出しを通じて、データを 1 つのオブジェクトに格納します。

だから、私は電話をかけ、いくつかのデータを受け取り、それを変数に入れます。次に、以前のデータを使用して別の呼び出しを行います。以前のデータに基づく多くの呼び出しがあります。

すべての呼び出しに対していくつかの関数を実行し、それらを 1 つずつ実行しようとしましたが、次の関数が実行されると、前の関数がまだ終了していない可能性があり、データが利用できないことがわかります。

コールバック関数があることは知っていますが、データに応じてそれらの一部を実行する必要があるかどうかに関係なく、次のすべての関数を前の関数からのコールバックによって呼び出されるようにすることはできません。

私のアプリを整理する方法を教えてください、またはそれについて読む場所を教えてください。必要なものを見つけるためにグーグルに何を書くべきかさえわかりません。

4

1 に答える 1

0

ajax リクエストを作成していますが、ajax リクエストは同期していないため、関数内でコールバックを使用して、関数がいつ終了したかを制御する必要があります。

これをカプセル化するいくつかのjquery関数を使用して、同じ動作をするように努力することができます。

データや他の関数に依存しない関数の配列を作成する必要があります。

    var deferreds = [];

    $.each(views, function(index, view) {
        deferreds.push($.get('url_that_you_want_to_call', function(data) {
                // treat your data as you wish
        }));
    });

次に、この配列を渡して実行し、いつ終了するかを制御できます。

    $.when.apply(null, deferreds).done(callback);

すべてのリクエストが完了するまで、このプロセスを繰り返す必要があります。

この回答は役に立ちました

于 2013-09-27T14:33:06.643 に答える