Acabo de enterarme de window.requestIdleCallback y me pregunto cuál es la diferencia con solo una simple promesa.
Por lo que sé, JS ya es bueno para poner en cola las promesas, por lo que no veo ningún beneficio a menos que requestIdleCallback use una cola diferente con una prioridad más baja. En ese caso, asumiría que es genial porque me gustaría tener una forma de aclarar qué código tiene menor prioridad que el renderizado.
window.requestIdleCallback simplemente ejecuta la función durante los períodos de inactividad del navegador para evitar el impacto en las animaciones y las respuestas de entrada, etc.
Las promesas son solo una forma de usar código asíncrono. Ese código puede ejecutarse mientras el navegador no está inactivo (si la promesa no está pendiente) y posiblemente podría afectar los eventos críticos de latencia.
Por lo tanto, las promesas pueden o no ejecutarse durante el período de inactividad del navegador, pero requestIdleCallback siempre se ejecutará en el período de inactividad (suponiendo que no se exceda el tiempo de espera).
Tenga en cuenta que estos 2 conceptos no son intercambiables. Sí, puede ejecutar un código de "promesa" asíncrono dentro de requestIdleCallback , pero la devolución de llamada no debe usarse para reemplazar la funcionalidad de una promesa. Es decir, no debe reemplazar el uso de promesas con la devolución de llamada, pero utilícelos juntos si corresponde.
Aquí hay información sobre window.requestIdleCallback :
https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback
Y promesas aquí:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise