ajax列表预加载要如何写才不会在数据未返回时与加载下一页冲突?

Z乌鸦 2016-12-07 10:45:50
我想是实现一个功能,就是加载列表时会预先下载下一页的内容,比如页面刚进入时直接下载前两页的数据,当点击下一页时,向服务器请求的是第三页,然后从内存中存放的第二页内容渲染出来。

现在遇到一个问题,比如现在显示的是第三页,第四页的请求已发出但还未返回,这时点击下一页,从内存中拿出的实际是第三页的内容(因为第四页的数据还未返回),而第五页的请求也发出,最终会导致第三页 多渲染一次,而即使第四页数据返回了存到内存,也会被后面第五页的数据覆盖掉。请问哪位大神能帮忙提供条思路解决这个冲突?

我自己有 想过,在数据未返回时让下 一页按钮处于loading状态,但被否决,说用户点击下一页时已经从内存加载了下一页的内容,不应该出现loading的状态了
...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
functionsub 2016-12-07
  • 打赏
  • 举报
回复
而即使第四页数据返回了存到内存,也会被后面第五页的数据覆盖掉。 你的问题不就是这个么?我说的是把所有数据都存起来,而不是只存你下一页的数据。 而且我也没叫你一次都请求下来吧?
Z乌鸦 2016-12-07
  • 打赏
  • 举报
回复
引用 1 楼 functionsub 的回复:
把所有分页的数据都存起来呗。
这个办法 不科学啊,怎么可能一下子把所有数据都请求下来的,这对服务器负担多大,分页的意义又何在
functionsub 2016-12-07
  • 打赏
  • 举报
回复
把所有分页的数据都存起来呗。
bluedrink 2016-12-07
  • 打赏
  • 举报
回复
用数组储存每一页数据, 页面加载出来后记录页码,并且请求下一页数据(得到的数据储存到数组,不要用push,可能会重复push同一个数据),加载页面时先判断数组是否存在该页数据(之前记录过页码),没有的话请求数据,得到的数据储存到数组并且加载出来,有的话直接加载,
Z乌鸦 2016-12-07
  • 打赏
  • 举报
回复
引用 3 楼 functionsub 的回复:
而即使第四页数据返回了存到内存,也会被后面第五页的数据覆盖掉。 你的问题不就是这个么?我说的是把所有数据都存起来,而不是只存你下一页的数据。 而且我也没叫你一次都请求下来吧?
抱歉没有理解对你的意思,我陷在自己的想法里没跳出来,退一步思路就开阔了
z77z 2016-12-07
  • 打赏
  • 举报
回复
你获取的数据不要采用覆盖的方式啊,每一页分别存如一个对象,点击哪一页在内存中读哪一页,没有再显示loding的状态,这样用户点击上一页的时候也就不会再重新请求了嘛

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧