在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
我有這個確切的問題,很想得到答案。爲你開始賞金。 –