ExtJs Ajax请求异常同步

时间:2015-04-08 10:26:07

标签: extjs

我在ExtJs中有一个Web应用程序。我需要注销,当Ajax请求的响应状态为401时。我使用此代码:

Ext.Ajax.on('requestexception', function(connection, response, options){
        if (response){
            if (response.status == 401 && myApp.auth.userInfo != null){
                myApp.auth.logout();
            }
        }
    });

它有效,但是当我有几个请求myApp.auth.logout();多次打电话,我无法再次登录,重新加载页面后我可以登录。是否有任何请求过滤器或某些方法使Ext.Ajax.on(' requestexception')同步,该函数myApp.auth.logout();只打了一次电话?

2 个答案:

答案 0 :(得分:1)

您可以使用single: true,这样您的处理程序将只处理事件的下一次触发,然后自行删除。

Ext.Ajax.on('requestexception', function (connection, response, options) {
    response && response.status == 401 && myApp.auth.userInfo != null && myApp.auth.logout();
}, null, {
    single: true
});

(见documentation

答案 1 :(得分:1)

尝试添加此功能。这样可以确保不执行成功和失败回调,应用程序应该停止(可能以下请求命中您的覆盖是由于级联执行失败/回调),然后执行logout

Ext.Ajax.on('requestexception', function(connection, response, options){
    if (response){
        if (response.status == 401 && myApp.auth.userInfo != null){
            delete options.failure;
            delete options.callback;
            myApp.auth.logout();
        }
    }
});