请教顺序可变的列表数据翻页的做法
发布于 6 年前 作者 IEfucker 3098 次浏览 来自 问答

做评论的翻页发现一个问题,但可能也不算问题…是这样:

用户初始得到第一页的10条,翻页得到第二页的10条

因为会有新的评论进来,如果在翻页前有新数据进来,请求接口得到第二页数据已经不是之前的列表了。

因为评论数据顺序变化还好说,如果是帖子按照新回复的排序,基本实时在变。

对于这种列表数据变化的情况,应该怎么做。

10 回复

变就变了,顺其自然。。。

变就变了,顺其自然。。。

如果是后台做的分页,那没什么影响吧。没看明白你的问题在哪

@HeroBoyluck 就是后台做的分页啊,影响是,第一页和第二页不是同一组列表的分页,列表更新了

这种就是保持翻页页码不变,内容不确定.

保证第 5 页的下一页肯定是第 6 页,即便数据可能重复/相同 普遍都是这种

还有保证内容的连续性,但不保证页码。找到这一页的最后一个 n ,然后下一页的数据从 n + 1 开始

保证数据不会重复,跟上一页连续,但页码不确定,有可能当前第 5 页,翻下一页之后变成了第 7 页,因为有新的数据进来了 通常用于无序翻页,例如滚动加载

不要太纠结,大家都是用第一种

@axetroy 现在前端采用的是滚动加载,也是觉得麻烦不想管。

无序翻页翻页那个方案对于序号会变,比如我上面举的例子,帖子按最新回复排序,也不好使了,感觉确实不应该纠结于数据的顺序正确

你都说后台的数据是根据评论更新排序的,比如热评都会在前几,而热评不会永远就是那几个。你在刷微博、刷帖子的时候,底下的评论在你第二次进来时也会变,这种实时在变动的东西本来就很正常啊,有什么纠结的。

@HeroBoyluck 对不起,前端我也在做,效果看看就知道了,刷微博每次都刷出大量重复数据,体验可想而知

@IEfucker 按时间排序,找到最后一个最晚的时间,按照这个时间继续开始查询,就会避免这个问题。说是这样简单,看具体业务。

比如按照时间倒排,后端查询列表的时候,指定 skip(0,10) where createAt < time ; 然后返回给前端的时候把time给前端,然后前端请求下页的时候传递time,后端再查 skip(10,10) where createAt < time

回到顶部