Как я могу переопределить тайм-аут 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;