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

时间:2018-07-18 18:13:24

标签: javascript extjs callback extjs4.1

免责声明:我是extjs的新手,并且仍在框架中寻找自己的出路。

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

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

1 个答案:

答案 0 :(得分: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,并且回忆起这个框架是如何开始的;)