本来评论区写的很简单,打开文章就能获取评论。但是我做了一个片刻模板(类似朋友圈),每一条帖子都有一个独立的点赞和评论功能,那这种怎么做呢,直接循环来判断呗,是不是很简单?
确实如此,但我在此花费了几小时,因为每次点击打开新的帖子的评论区的时候都会触发请求评论,添加一个新的事件监听器,有点击事件和滚动事件。在我调试的时候bug连续不断,要么获取的不准确,要么滚动无限触发,真是让人头疼。
后来慢慢的debug摸索,发现两个问题:
- 监听器重复添加
- 变量作用域
我是写了一个获取评论的函数 get_comments_func()
,然后里面套用了另外一个fetch函数(在外面声明),然后在点击和滚动事件不能把他俩写在 get_comments_func()
函数里,得放在外面调用,但是我发现传值有点问题,最后使用一个全局对象来进行改变值,这样,click和scroll事件都能共享一个值,而不是互相独立的。
函数 get_comments_func()
每次调用 get_comments_func()
函数时,都会先解绑原来的监听器,然后再请求完成后重新绑定。
函数 scrollRequest()
在 scrollRequest()
函数里,对全局变量进行更改即可(click事件也类似)。
后续...
还更新了邮件系统
又简单优化了下
还有一个更优的方案就是单独写一个函数来专门调用数据
参与讨论