Esto probablemente se explica mejor con código:
en mi archivo utils he creado la siguiente función asíncrona:
export async function post(fetch, url, body) { const res = await fetch(url, { method: 'POST', body, headers }); return await res.json(); }He reducido la función para evitar publicar demasiado código.
Ahora, en mi archivo de componente .svelte, la función anterior se llama de la siguiente manera:
async function handleLogin() { const result = await post(fetch, 'https://accountingserver.dev/auth/login', { email: email, password: password }); console.log(result); }En el ejemplo anterior, el resultado se muestra correctamente como se esperaba. Pero he descubierto que también puedo hacer lo siguiente y obtener el mismo resultado:
async function handleLogin() { post(fetch, 'https://accountingserver.dev/auth/login', { email: email, password: password }).then((result) => { console.log(result); }); }Entonces, mi pregunta, ¿alguno de los dos métodos es más válido y, de ser así, por qué?
Es una preferencia, pero siempre que sea posible, debe inclinarse por usar async/await . Hace que su código sea más limpio y fácil de leer y también lo ayuda a evitar Promise Hell .
Debe tener en cuenta que es posible que algunos entornos no admitan async/await ya que es una función más nueva, pero es probable que la mayoría de los entornos modernos la admitan de forma nativa. En los casos en los que no se admita async/await await, no se permitirá la sintaxis de la async function name(){} y deberá usar .then() en lugar de await .