1

関心のある 2 つのモデル/プロキシ/ストアがQuestionsありChoicesます。どちらも REST サーバーからデータを JSON として取得します。私のプロセスは現在次のようになっています。

            // load numQuestions records from store.Questions
    var qs = Ext.getStore('Question');
            //... loadmask, etc.
    qs.load({
        scope : this,
        params : {
            limit : numQuestions
        },
        callback : function() {
            this.createQuestionCards(numQuestions);
        }
    });

を取得したら、次のようにそれぞれに関連するQuestionsをループしてフェッチします。ChoicesQuestion

    for ( i = 0; i < numQuestions; i++) {
                // ... misc ...
        Assessor.questionChoices[i] = qs.getAt(i).choices();
                // ...misc...
        },

これは、ループの反復ごとに XMLHTTPRequest を作成することを除けば、うまく機能します。0.15 秒領域の最小応答時間で、N < ~40 の場合は問題ありません。数が 200 に達すると (これは一般的な使用例です)、遅延は厄介なものになります。

ExtJS でリクエストを「バッチ処理」し、ループ本体の後に送信するにはどうすればよいですか? 例えば:

var choiceBatch = qs.createBatch();
for ( i = 0; i < numQuestions; i++) {
    // ... misc ...
    Assessor.questionChoices[i] = choiceBatch.getAt(i).choices();
    // ...misc...
};
choiceBatch.execute();
4

2 に答える 2

0

Ext.data.proxy.Restには構成オプションbatchActionsがあり、基本的にはさまざまなメソッドを持つAjaxProxyあるため、おそらくAjaxProxyと同じように機能します。

于 2012-11-17T01:03:09.977 に答える
0

マルチパートを使用した安らかなバッチについて明確な回答が得られないため...

v4.2.1で自分でテストすると、batchActions=trueバッチは同じストアとHTTPメソッド内にのみあるという結果になりました。Ext.data.proxy.Rest( batchActionsREST のデフォルトは false)

つまり、200 件の投稿と 1 件の削除があり、store.sync() を呼び出すと、2 つのリクエストにバッチ処理され、POST リクエストの本文は単一のレコードではなくレコードの配列でラップされます。

multipart/mixed を使用してすべての GET、POST、PUT、および DELETE ですべてのストアをバッチ処理できるかどうかを探していますが、結果は否定的です。( OData バッチ処理を確認してください)

OPに関して、探しているのはモデルの関連付けです。Extモデルを作成QuestionsChoices、サーバーにネストされたjsonデータで応答させると(リクエストに埋め込まれQuestionsた子が含まれます)、Extは自動的に子ストアとともにレコードを作成します。Choicesquestionquestion.choices()

于 2013-07-10T15:30:56.883 に答える