效果预览

前往查看:https://oyiso.cn/moments

本来评论区写的很简单,打开文章就能获取评论。但是我做了一个片刻模板(类似朋友圈),每一条帖子都有一个独立的点赞和评论功能,那这种怎么做呢,直接循环来判断呗,是不是很简单?

确实如此,但我在此花费了几小时,因为每次点击打开新的帖子的评论区的时候都会触发请求评论,添加一个新的事件监听器,有点击事件和滚动事件。在我调试的时候bug连续不断,要么获取的不准确,要么滚动无限触发,真是让人头疼。

后来慢慢的debug摸索,发现两个问题:

  • 监听器重复添加
  • 变量作用域

我是写了一个获取评论的函数 get_comments_func() ,然后里面套用了另外一个fetch函数(在外面声明),然后在点击和滚动事件不能把他俩写在 get_comments_func() 函数里,得放在外面调用,但是我发现传值有点问题,最后使用一个全局对象来进行改变值,这样,click和scroll事件都能共享一个值,而不是互相独立的。

函数 get_comments_func()

声明函数 get_comments_func()

每次调用 get_comments_func() 函数时,都会先解绑原来的监听器,然后再请求完成后重新绑定。

函数 scrollRequest()

通过scroll(滚动到顶部)来获取评论

scrollRequest() 函数里,对全局变量进行更改即可(click事件也类似)。

后续...

还更新了邮件系统

这。。。

又简单优化了下

看起来没那么臃肿了

还有一个更优的方案就是单独写一个函数来专门调用数据