当使用鼠标滚轮

时间:2017-06-06 11:31:05

标签: angular google-chrome

我制作了infinite scroll directive,它对我的​​用例非常有用。

然而,有一个问题。

当通过滚动鼠标滚轮触发infiniteScrollAction时,我调用的函数中的HTTP调用在响应中有一个非常长的异常延迟...例如它大概需要3-5个回复的秒数 - 每次保证。

但是,当我使用浏览器滚动条滚动时,响应会恢复正常,并且与通常的长度相同(非常快)。

我可以一遍又一遍地重复这一点。

以下是一些GIF演示。第一个是用鼠标滚轮滚动,注意顶部的加载条是如何非常慢的,因为响应需要一段时间。第二个是滚动浏览器滚动条,快速响应。两张图片都因为隐私而裁剪和模糊:

enter image description here

enter image description here

有人可以发现指令有什么问题吗?我不明白......起初我认为它与事件循环有关,但我在每个函数内部console.log()一直调用HTTP调用函数,一切都发生在瞬间。

根据我是使用鼠标滚轮还是使用浏览器滚动条滚动,这需要更长的响应,这绝对是荒谬的,但它发生了什么。我无法弄清楚出了什么问题。但我可以证明情况就是这样,因为当我使用鼠标滚轮滚动时,我可以在Chrome上的网络标签中看到响应处于暂挂状态,但是当我使用滚动条滚动时,它不会等待很长时间。

1 个答案:

答案 0 :(得分:0)

你见过这个Random high content download time in chrome?吗?

我正在使用ngx-infinite-scroll,我遇到了同样的问题。

所以我的解决方案(感谢上面提到的帖子):

export class InfiniteScrollDirective {
...
    @HostListener('mousewheel')
    onMouseWheel() {
    }
...
}

即使没有任何实现,只有纯粹的侦听器才能解决问题。之后没有更慢的http请求。

你能试试吗?