我有一个关于代码而不是用户体验的问题,我有 JS:
$(document).on( "click", "input:radio,input:checkbox", function() {
getContent($(this).parent(),0);
});
上面的 JS 从单选按钮和复选框中获取内容,并刷新页面以显示依赖关系。例如,如果我选中"is",并且依赖项是“是,显示文本框”,则上述内容有效!
我想知道的是,是否有更好的方法来做同样的事情,但以更友好的方式(有时会导致页面变慢)。特别是如果我一次性做了很多勾号/检查,当父刷新时我会错过一些!
最佳答案
如果您必须访问服务器来getContent()
,那么它会自动变慢。
但是,如果一次发送所有元素,而不是每次进行更改时都访问服务器,则可以节省很多。
但是,如果创建一个超大页面不是一种选择,那么您需要保留您的 getContent()
函数,但是有一个可能的解决方案,如果您还没有实现这样的解决方案,也就是缓存之前查询过的所有数据。
因此,您可以拥有一个对象( map ),其中包含定义您感兴趣的数据的键。如果定义了键,则数据已经可用,并且您可以直接从缓存返回并使用该数据。否则,您必须访问服务器。
要做的一件事是,您在来回“勾选”事物时提到了缓慢,即一次不要向服务器发送多个请求(如果服务器从不回复,则超时)。所以这里的流程是:
- 需要数据“xyz”
- 该数据是否已缓存?如果是,则跳过步骤(3和4)
- 请求是否正在处理?如果是,则将数据压入请求栈并返回
- 向服务器发送请求,服务器会阻止任何进一步的请求,直到收到“xyz”的答复
- 接收答案并将数据缓存在对象(映射)中并释放请求队列
- 根据需要使用数据
- 我检查请求队列,如果不为空则弹出下一个请求并从(2)开始处理
请求进程预计在计时器上运行,因为 (1) 它可能会超时,并且 (2) 它需要在后台运行(不是 GUI 抢占式)
关于javascript - 如何在 JavaScript 中刷新屏幕数据而不会使页面变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307986/