【问题标题】:Improving Handsontable validation reponsiveness提高 Handsontable 验证响应能力
【发布时间】:2016-04-03 16:39:32
【问题描述】:

如果我在做像 isNumeric 这样的简单检查,响应时间很好,但是一旦我开始做更复杂的事情(检查数据库是否值有效),它很快就会变得太慢而无法使用。 IE。 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 中验证功能的响应时间?

【问题讨论】:

    标签: jquery ajax optimization handsontable


    【解决方案1】:

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

    【讨论】:

    • 有没有办法告诉 Handontable 您希望能够以这种方式进行验证?我还没有看到任何方法可以阻止它单独检查每个单元格。
    • 有,但我找不到它是如何完成的。本质上,您关闭验证 onChange,然后在 afterChange 事件中执行 hot.validateCells()hot.validateCell(x,y)
    猜你喜欢
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多