Как я могу переопределить тайм-аут Ext JS Store?

У меня есть JsonStore, который должен вернуться из HTTP-запроса, который занимает больше 30 секунд.

Установка свойства "timeout" в конфигурации JsonStore не отменяет 30-секундный тайм-аут, также не устанавливает прокси-сервер (а не просто устанавливает свойство url) и помещает тайм-аут в прокси-сервер.

Как продлить этот тайм-аут?

(я использую Ext JS 3.1.1)

var ds = new Ext.data.JsonStore({
    autoSave:       true,
    method:         "POST",
    /*url:          "search-ajax.aspx",
    timeout:        120000,*/
    root:           "rows",
    totalProperty:  "results",
    idProperty:     "primarykeyvalue",
    proxy:      new Ext.data.HttpProxy({ url: "search-ajax.aspx", timeout: 120000 }),
    fields:     previewColumnConfig,
    baseParams: {
        Command:    "",
        ID:     primaryKeyValue,
        Entity: entityFullName,
        vetype: ValidationEntityType,
        vepk:       ValidationEntityPK,
        now:        (new Date()).getTime()
        },
    writer: new Ext.data.JsonWriter({
        encode:     true,
        listful:    false
        })
    });

Ответы

Ответ 1

Если вы хотите, чтобы тайм-аут был одинаковым во всем приложении, установите его глобально на синглете Ext.Ajax.

Ext.Ajax.timeout = 120000; //2 minutes

Если вы хотите, чтобы тайм-аут устанавливался по-разному только по одному запросу, вам нужно определить HttpProxy в var и изменить одно из его свойств, прежде чем передавать его в конфигурацию JsonStore. Свойство conn принимает параметры, которые будут использоваться только для этого запроса.

var proxy = new Ext.data.HttpProxy({ url: "search-ajax.aspx" });
proxy.conn = { timeout: 120000 };

Ответ 2

без определения прокси-сервера или соединения в var

proxy:      new Ext.data.HttpProxy(
              new Ext.data.Connection({
                          url: "search-ajax.aspx",
                          timeout: 120000 })),

Ответ 3

Вы можете определить:

var proxy1 = new Ext.data.HttpProxy(
        { 
            url: 'yourUrl',
            reader: {
                    type: 'json',
                    root: 'items',
                    totalProperty: 'total'
                }
        });
proxy1.timeout = 600000; 

Он включает считыватель в прокси

Ответ 4

Я знаю, что этот вопрос старый, но мне хотелось добавить опцию переопределения, которую я нашел, что работает в ExtJS 4.2.2

Ext.override(Ext.data.proxy.Ajax, { timeout: 120000 });

Я завершил переопределение в приложении init, однако, я думаю, вы могли бы завершить это переопределение где-нибудь до request.

Кроме того, если вы используете JsonP, это переопределение работает для меня:

Ext.data.proxy.JsonP.timeout = 120000;