XHR/setTimeout/Promise直到滚动停止在Chrome中才完成

sak*_*ako 15 javascript scroll google-chrome xmlhttprequest settimeout

在Chrome中,如果用户滚动所有XHR并且setTimeouts将被延迟,直到滚动停止并且我需要一个解决方法.此博客文章中描述了行为.虽然这个功能有助于移动滚动,但对于无限滚动来说却是灾难性的,这正是我想要做的.

发生这种情况的证据:

  • 所有其他浏览器都能正常工作,Chrome会显示一个空白屏幕,直到用户停止滚动.

  • 网络面板将显示所有请求,pending直到滚动结束,然后它们全部完成.

  • 把它放在一个片段中,运行它然后立即开始滚动.滚动完成后才会调用setTimeout.

var p = new Promise(function (resolve) {
    setTimeout(function () {
        console.log('resolving');
        resolve();
    }, 1000)
});

p.then(function () {
    console.log('DONE!!');
})
Run Code Online (Sandbox Code Playgroud)

Nic*_*bal 6

根据您确切的情况和预期的浏览器的支持,我想尝试服务人员 -这意味着这样的任务,一个你正在处理(可以拦截所有流量),或一个网络工作者,以做你的AJAX的背景.


Tod*_*fee 1

由于这与引擎有关,因此我认为不可能有解决方法。相反,我已向 Chrome 团队提交了错误报告。

https://bugs.chromium.org/p/chromium/issues/detail?id=661155