Как я могу переопределить тайм-аут Ext JS JsonStore? - PullRequest
16 голосов
/ 12 февраля 2010

У меня есть 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
        })
    });

Ответы [ 4 ]

36 голосов
/ 13 февраля 2010

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

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

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

var proxy = new Ext.data.HttpProxy({ url: "search-ajax.aspx" });
proxy.conn = { timeout: 120000 };
12 голосов
/ 04 марта 2011

без определения прокси или соединения в переменной

proxy:      new Ext.data.HttpProxy(
              new Ext.data.Connection({
                          url: "search-ajax.aspx",
                          timeout: 120000 })),
2 голосов
/ 30 декабря 2013

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

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

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

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

Ext.data.proxy.JsonP.timeout = 120000;
2 голосов
/ 28 августа 2012

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

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

Включает ридер в прокси

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...