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

我的TreeStore:

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');
        }
    }
});


使用此代码,仅在超过查询执行时间并取消请求时才捕获beforeload事件。一切正常后,我抓到beforeloadload

最佳答案

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

10-02 14:07