Estoy aprendiendo React API. Promise y async están usando esto. y...
Encontré promesa, documentos asíncronos de MDN, pero no puedo entender "asíncrona en alguna función siempre devuelve el objeto de promesa"
function sleep(ms){ return new Promise( resolve => setTimeout(resolve, ms)); } async function process(){ console.log('hi'); await sleep(1000); console.log('hello'); } process().then(() => { console.log('end') })Cuando se llama a la función async , devuelve una Promise .
Si la función asíncrona devuelve un valor, el estado de la Promesa se resolverá con el valor devuelto.
Si la función asíncrona arroja una excepción o algún valor, el estado de la Promesa será rechazado con el valor arrojado.
Se puede usar una expresión de await dentro de una función asíncrona, que suspenderá la ejecución de la función asíncrona y esperará la resolución de la Promesa pasada a la expresión. Después de la resolución, devolverá el valor resuelto y continuará con la ejecución de la función asíncrona.
Tenemos Promise y Observables para lidiar con la naturaleza asíncrona de funciones o aplicaciones y sí, Async siempre devuelve una promesa, mientras que las funciones sincrónicas y asincrónicas pueden devolver observables. Una promesa va seguida de dos palabras clave,
const promise = FooPromise((resolve,reject) = > { revolve("i am resolve"); reject("i am reject"); )luego de esto definimos que hacer si nuestra promesa es resuelta o rechazada por estas palabras claves respectivamente.
.then((resolveMessage) => { console.log(resolveMessage); } .catch((catchMessage) => { console.log(CatchMessage); }Por async return promise object significa que la función ahora devuelve un contenedor de promesa. Puede considerarlo como un marcador de posición temporal en lugar del valor real enviado. La promesa puede rechazarse o resolverse y, hasta que no se complete, permanecerá en estado pendiente.
Esto permite que las operaciones asincrónicas sucedan fácilmente, lo que puede llevar algún tiempo e interrumpir el flujo de ejecución normal.
Además, la instrucción .then funciona con promesas. Si intenta acceder sin async, arrojará un error ya que espera un objeto de promesa.
function sleep(ms){ return new Promise( resolve => setTimeout(resolve, ms)); } function process(){ console.log('hi'); await sleep(1000); console.log('hello'); } process().then(() => { console.log('end') })