Parece que no puedo encontrar una respuesta directa a esta, ya que casi todos los recursos invierten mi pregunta en "¿Puedo llamar sincrónico desde Asincrónico?". También pregunto por curiosidad y con la intención de comprender la relación entre sincronización y asincronía.
A continuación se muestra un ejemplo muy básico de lo que estaba pensando, pero anteriormente trabajé mal con algunos elementos asincrónicos y sincrónicos y quiero seguir una mejor práctica.
Estas son todas las funciones que sé que pueden ejecutarse de manera segura primero, ya que la mayoría de ellas son configuraciones html basadas en algunos detalles del sistema, como la fecha y la hora.
// Fires from body's onload function startup(){ // Begin startup and setup makeDivs(); getDate(); setUpInputHandlers(); // Begin API and Async functions startupAsync(); } async function startupAsync(){ await callApi(); await doDataWork(); // more async functions throughout. }
No busco hacer nada sincrónico con los datos asíncronos, pero quiero que se ejecuten algunos procesos antes de saltar a mis llamadas API y trabajar con datos API. ¿Sería algo similar a lo anterior una forma segura de hacer esto? Sé que sería más fácil sincronizar ambas startups.
Si desea que startup()
ejecute las funciones asíncronas callApi()
y doDataWork()
antes de hacer otra cosa, entonces el inicio también debería ser una función asíncrona.
async function startup(){ makeDivs(); getDate(); setUpInputHandlers(); await callApi(); await doDataWork(); } await startup() // then do something afer the async functions finish
Si desea hacer otra cosa mientras se ejecutan las funciones asíncronas, no es necesario que el inicio sea una función asíncrona.
function startup(){ makeDivs(); getDate(); setUpInputHandlers(); (async function(){ await callApi(); await doDataWork(); })(); } startup() // do something while async operations run