1

我有两个我关心的模型/代理/商店QuestionsChoices. 两者都以 JSON 格式从 REST 服务器获取数据。我的流程目前是这样的:

            // 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,我就会遍历并获取与Choices每个相关的内容,Question例如:

    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

由于我没有得到关于多部分的宁静批处理的明确答案......

我自己batchActions=trueExt.data.proxy.Restv4.2.1 中进行测试,结果批次只在同一个商店和 HTTP 方法中。(batchActions对于 REST,默认为 false)

这意味着如果有 200 个 post 和 1 个 delete 并且您调用 store.sync(),它将批处理成 2 个请求,POST 请求正文将用记录数组而不是单个记录包装。

我正在寻找它是否可以通过使用 multipart/mixed 来批量处理所有具有 GET、POST、PUT 和 DELETE 的商店,但结果是否定的。(查看OData 批处理

关于 OP,您要寻找的是模型关联。一旦您创建QuestionsChoicesExt 模型并让服务器响应嵌套的 json 数据(因此Questions包含Choices嵌入在请求中的子项),Ext 将自动创建question记录以及question.choices()子存储。

于 2013-07-10T15:30:56.883 回答
0

Ext.data.proxy.Rest有一个配置选项batchActions,因为它基本上是一个具有不同方法的AjaxProxy,它可能会以与AjaxProxy 相同的方式工作。

于 2012-11-17T01:03:09.977 回答