In Chrome, se l'utente sta scorrendo tutti gli XHR e setTimeouts verrà ritardato fino allo stop dello scorrimento e ho bisogno di una soluzione alternativa per questo. Il comportamento è descritto in this blog post. Sebbene questa funzionalità aiuti lo scorrimento mobile, è disastrosa per lo scroll infinito, che è quello che sto cercando di fare.XHR/setTimeout/Promessa non finita finché lo scorrimento non si interrompe in Chrome
prove che questo sta accadendo:
Tutti gli altri browser funzionano bene, Chrome mostra uno schermo vuoto fino a quando l'utente smette di scorrere.
pannelloLa rete mostrerà tutte le richieste come
pending
fino scrolling è finita, allora tutte le finiture in una volta.Inserire questo in uno snippet, eseguirlo quindi iniziare a scorrere immediatamente. Il setTimeout non verrà chiamato fino a quando non terminerà lo scorrimento.
var p = new Promise(function (resolve) {
setTimeout(function() {
console.log('resolving');
resolve();
}, 1000)
});
p.then(function() {
console.log('DONE!!');
})
costa usare 'requestAnimationFrame()' invece di 'setTimeout()' accadere per aiutare? Il post del blog rende abbastanza chiaro che Chrome sta dando la priorità alle attività di animazione e GPU in modo che l'esperienza dell'utente (ciò che sta facendo) non ne risenta. – arthurakay
Sì, lo fa! Tuttavia, questo non aiuta con XHR, che è ciò che conta per lo scroll infinito. – sakabako
Sto avendo questo problema esatto, mi piacerebbe avere una risposta. Ha iniziato una taglia per te. –