【问题标题】:How to reduce the load time of items inside the Dropdown如何减少下拉列表中项目的加载时间
【发布时间】:2018-05-02 18:31:37
【问题描述】:

我正在尝试将 100 000 个项目加载到按钮单击事件的下拉列表中。但是加载太慢了。如何减少物品的加载时间?

产品循环

    for (int i = 0; i < 100000; i++) {
        out.print("<option>Product" + i + "</option>");
    }

阿贾克斯

    <script>
        function getproduct() {
            var output;
            var xhtp = new XMLHttpRequest();
            xhtp.onreadystatechange = function () {
                if (xhtp.readyState === 4 && xhtp.status === 200)
                    output = output +xhtp.responseText;
                   }
                }
                document.getElementById("product").innerHTML = output;
            }
            xhtp.open("post", "ProductController", true);
            xhtp.send();
        }
 </script>

【问题讨论】:

  • 你应该考虑使用数据库,或者看看 reactjs

标签: java ajax html for-loop


【解决方案1】:

包含 100,000 个元素的下拉菜单不是好的用户体验。我建议您改为提供typeahead 功能。

与其一次性获取所有内容,不如构建一个搜索 API,用于过滤结果。您的 UI 应为用户提供搜索选项(部分匹配或完全匹配,根据您的喜好),并在搜索时显示相关搜索结果以供用户选择,作为下拉菜单。

您可以优化这种“加载所有内容”场景的唯一方法是您是否可以进行增量加载。您的数据供应商 API/方法应该以较小的大小(例如 500 个)为您提供数据,并且对于每个成功的请求,您都可以将数据附加到下拉菜单中。这样,在填充所有选项之前不会阻止渲染。

【讨论】:

  • 是的,确实如此。但我想要这个的逻辑。 @arjunlal
  • 我已经更新了在这种情况下如何优化的答案。 @user6433464
猜你喜欢
  • 2017-12-30
  • 1970-01-01
  • 2020-09-21
  • 2020-11-07
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多