我制作了infinite scroll directive,它对我的用例非常有用。
然而,有一个问题。
当通过滚动鼠标滚轮触发infiniteScrollAction
时,我调用的函数中的HTTP调用在响应中有一个非常长的异常延迟...例如它大概需要3-5个回复的秒数 - 每次保证。
但是,当我使用浏览器滚动条滚动时,响应会恢复正常,并且与通常的长度相同(非常快)。
我可以一遍又一遍地重复这一点。
以下是一些GIF演示。第一个是用鼠标滚轮滚动,注意顶部的加载条是如何非常慢的,因为响应需要一段时间。第二个是滚动浏览器滚动条,快速响应。两张图片都因为隐私而裁剪和模糊:
有人可以发现指令有什么问题吗?我不明白......起初我认为它与事件循环有关,但我在每个函数内部console.log()
一直调用HTTP调用函数,一切都发生在瞬间。
根据我是使用鼠标滚轮还是使用浏览器滚动条滚动,这需要更长的响应,这绝对是荒谬的,但它发生了什么。我无法弄清楚出了什么问题。但我可以证明情况就是这样,因为当我使用鼠标滚轮滚动时,我可以在Chrome上的网络标签中看到响应处于暂挂状态,但是当我使用滚动条滚动时,它不会等待很长时间。
答案 0 :(得分:0)
你见过这个Random high content download time in chrome?吗?
我正在使用ngx-infinite-scroll,我遇到了同样的问题。
所以我的解决方案(感谢上面提到的帖子):
export class InfiniteScrollDirective {
...
@HostListener('mousewheel')
onMouseWheel() {
}
...
}
即使没有任何实现,只有纯粹的侦听器才能解决问题。之后没有更慢的http请求。
你能试试吗?