改善Handsontable验证reponsiveness

时间:2015-12-29 18:44:38

标签: jquery ajax optimization handsontable

如果我正在进行像isNumeric这样的简单检查,那么响应时间就可以了,但是一旦我开始做任何更复杂的事情(如果值有效则检查数据库)那么它很快就变得太慢而无法使用。即。 900行为45秒,25k行为20分钟(然后网格出现错误)

以下是我目前正在尝试实施的一种检查示例:

var BadArray = [];
var GoodArray = [];

isValid = function (value, callback) {
    var bad = $.grep(BadArray, function (e) { return e.Key == value; });
    if (bad != null && bad.length === 0) {

        var good = $.grep(GoodArray, function (e) { return e.Key == value; });
        if (good != null && good.length === 0) {
            var errMsg;
            var data =
                $.ajax({
                    //ajax call setup here
                    success: function (response) {
                        if (response == "active") {
                            GoodArray.push(value);
                            callback(true);
                        }
                        else {
                            BadArray.push({ Key: value, RspMsg: response });
                            errMsg = response;
                        }
                    }
                });

            if (errMsg != null) {
                $("#ValErrors").empty();
                $.each(BadArray, function (index, value) {
                    $("#ValErrors").append("Key " + value.Key + ": " + value.RspMsg + "<br />");
                });

                callback(false);
            }
        }
        else {
            callback(true);
        }
    }
    else {
        callback(false);
    }
};

我还能做些什么来改进这个具体的例子吗? 有没有关于如何改善Handsontable中验证功能的响应时间的一般提示/技巧?

1 个答案:

答案 0 :(得分:0)

好吧,如果你有900行,每行10列,那就是9,000个ajax调用!也许您可以做的只是验证使用此方法更改的单元格,并且当您需要验证所有单元格时,有一个单独的端点,它接受整个数据数组,检查每个单元格,并返回所有未验证单元格的数组