Javascript Extjs-在Model.save()中重试API请求

Javascript Extjs-在Model.save()中重试API请求,javascript,extjs,callback,extjs4.1,Javascript,Extjs,Callback,Extjs4.1,免责声明:我是extjs新手,仍然在框架中摸索 我有一个与PHP后端通信的extjs前端。我的应用程序的一部分向后端提交数据并接收如下响应: var data = { "name": values.namefield, "activityList" : validActivityList, "flag": true }; var cluster = Ext.create('ClusterModel', data); cluster.save({ success

免责声明:我是extjs新手,仍然在框架中摸索

我有一个与PHP后端通信的extjs前端。我的应用程序的一部分向后端提交数据并接收如下响应:

var data = {
    "name": values.namefield,
    "activityList" : validActivityList,
    "flag": true
};

var cluster = Ext.create('ClusterModel', data);

cluster.save({
    success: function (model,data) {
        //handle success scenario
    },
    failure: function (model, response) {
        //oops something went wrong
        //need to retry the request with data flag set to false!
    }
});
我有一个特定的失败场景,需要通过将flag字段设置为false来重试请求。我能想到的唯一方法是在故障处理程序中嵌套和复制代码

大概是这样的:

failure: function (model, response) {
    //oops something went wrong
    //need to retry the request with data flag set to false!
    var data = {
        "name": values.namefield,
        "activityList" : validActivityList,
        "flag": false
    };

    var clusterRetry = Ext.create('ClusterModel', data);
    clusterRetry.save({...//more duplicate code})
}
这感觉像是一个非常糟糕的主意,我甚至不确定它是否会起作用。有没有其他方法可以让我完成这项任务


同样值得注意的是,我使用的是extjs 4.1.1

您可以创建一个函数,在出现错误时调用自己,并将标志设置为false

诸如此类:

SaveCluster: function(values, validActivityList, flag) {
    var data = {
        "name": values.namefield,
        "activityList" : validActivityList,
        "flag": flag
    };

    var cluster = Ext.create('ClusterModel', data);

    cluster.save({
        success: function (model,data) {
            //handle success scenario
        },
        failure: function (model, response) {
            this.SaveCluster(values, validActivityList, false);
        }
    });
}
您可能在故障函数中遇到范围问题,如果问题出现,我会让您找到解决方案,如果您遇到问题,请随时询问我们

我在2年前开始使用ExtJS,我记得这个框架一开始是如何使用的