查询执行时间超过超时时的ExtJS Catch事件

时间:2015-07-03 13:38:17

标签: javascript extjs extjs4

我有一个5000毫秒超时的ajax TreeStore,我希望在查询执行时间超过超时时捕获该事件。我该怎么办?

我的TreeStore:

$.ajax({
type: 'POST',
url: '/preview-image-upload',
processData: false,
contentType: false,
data: data
});

使用此代码,我只会在超出查询执行时间并取消请求时捕获Ext.define('Portal.store.ObjectsTreeStore', { extend: 'Ext.data.TreeStore', model: 'Portal.model.ObjectsTreeModel', proxy: { type: 'ajax', url: 'my/url.json', timeout: 5000, // 5 seconds reader: { type: 'json', successProperty: 'success', messageProperty: 'message' } }, listeners: { beforeload: function() { console.log('1'); }, load: function() { console.log('2'); }, exception: function() { console.log('3'); } } }); 事件。当一切正常时,我会抓住beforeloadbeforeload

2 个答案:

答案 0 :(得分:0)

Ajax存储代理在后台使用Ext.Ajax将HTTP请求发送到服务器。您可以在requestexception event singleton上注册Ext.Ajax处理程序,如下所示:

Ext.Ajax.on('requestexception', function() {
    console.log('HTTP error');
});

请注意,因为无论是谁发起请求都会触发此事件处理程序,因此它是系统范围的(全局),而不是特定于发起请求的组件(在您的情况下为Portal.store.ObjectsTreeStore)。

答案 1 :(得分:0)

只需将异常侦听器附加到代理而不是商店。请参阅示例:https://fiddle.sencha.com/#fiddle/psj