Chromeでは、ユーザーがすべてのXHRをスクロールしていて、スクロールが止まるまでsetTimeoutsが遅れてしまう場合があります。この動作はthis blog postで説明されています。この機能はモバイルスクロールに役立ちますが、無限のスクロールでは悲惨です。これは私がやろうとしていることです。これが起こっているXHR/setTimeout/Chromeでスクロールが停止するまでプロミスが終了しない
証拠:他のすべてのブラウザでは正常に動作
ユーザーがスクロールを停止するまで、Chromeは空の画面が表示されます。スクロールが終わるまで
ネットワークパネルには、一度にすべての彼らの仕上げ、その後、
pending
としてすべての要求が表示されます。これをスニペットに入れて実行し、すぐにスクロールを開始します。 setTimeoutは、スクロールが終了するまで呼び出されません。
var p = new Promise(function (resolve) {
setTimeout(function() {
console.log('resolving');
resolve();
}, 1000)
});
p.then(function() {
console.log('DONE!!');
})
はかなりのsetTimeout() 'を助けるために起こる' 'よりもrequestAnimationFrameのを()'使用していますか?ブログの投稿では、ユーザーエクスペリエンス(何がしているか)が損なわれないように、ChromeがアニメーションとGPU関連のタスクに優先順位を付けることが明確になっています。 – arthurakay
はい、あります!しかし、それは無限スクロールにとって重要なXHRには役立ちません。 – sakabako
私はこの正確な問題を抱えています、答えを得るのが大好きです。あなたのために恩恵を始めました。 –