在Chrome中,如果用户滚动所有XHR并且setTimeouts将被延迟,直到滚动停止,我需要一个解决方法。行为在this blog post中描述。虽然此功能可帮助移动滚动,但无限滚动是灾难性的,这正是我想要做的。XHR/setTimeout/Promise没有完成,直到Chrome中的滚动停止
证据表明这种情况正在发生:
所有其他浏览器正常工作,Chrome会显示,直到用户停止滚动空白屏幕。
网络面板将显示所有请求为
pending
,直到滚动结束为止,然后它们全部一次完成。把它放在一个代码片段中,运行它然后立即开始滚动。直到滚动结束后才会调用setTimeout。
var p = new Promise(function (resolve) {
setTimeout(function() {
console.log('resolving');
resolve();
}, 1000)
});
p.then(function() {
console.log('DONE!!');
})
是否使用'requestAnimationFrame()'而不是'的setTimeout()'正好帮助?博客文章清楚地表明,Chrome将动画和GPU相关的任务放在了优先位置,因此用户体验(他们正在做什么)不会受到影响。 – arthurakay
是的,它的确如此!然而,这对XHRs没有帮助,这对无限滚动来说很重要。 – sakabako
我有这个确切的问题,很想得到答案。为你开始赏金。 –