Necesito llamar a una función común ya sea que se invoque la función síncrona o la función asíncrona .
Así es como escribí por primera vez, pero esto no es correcto ya que se llamará a foo antes de que se complete la función asíncrona.
function main(element) { if (element.id === 'sync') { syncFunction(); } else { asyncFunction(); } foo(); } Entonces, se me ocurrió esto, pero aquí siento que estoy repitiendo la llamada a foo demasiadas veces. ¿Hay una mejor manera?
function main(element) { if (element.id === 'sync') { syncFunction(); foo(); } else { asyncFunction().then(() => { foo(); }); } }Podría usar async/await y refactorizar esto aún mejor, pero donde este código finalmente se ejecutará no lo admite . ¿Hay alguna manera de escribir mejor esto usando promesas?
Si coloca el resultado de la llamada en Promise.resolve() , puede encadenar .then incondicionalmente.
function main(element) { Promise.resolve((element.id === 'sync' ? syncFunction : asyncFunction)()) .then(foo); }