Cosas que prometo terminar

Javascript espera a que la función termine

Una promesa es un objeto que devolverá un valor en el futuro, puede ser un valor resuelto, lo que significa que la promesa fue exitosa, o un valor rechazado, lo que significa que ocurrió un error. Una promesa sólo devolverá un valor una vez, lo que significa que si una promesa devuelve un error, sólo lo devolverá una vez.

Para crear una promesa, utilizamos la palabra clave new, y dentro del objeto Promise, pasamos una función. Esta función se llama executor, y toma dos argumentos, resolve para el éxito y reject para el error:

Dentro de la promesa, hay una condición y aquí es donde se pone la lógica. En caso de que la condición se cumpla, usamos el argumento resolve para que nos devuelva el éxito. En caso de que haya un error, el argumento reject devolverá un error para la promesa:

El encadenamiento de promesas es una de las cosas que hace que las promesas sean tan geniales y fáciles de usar. Podemos ejecutar una cadena de tareas asíncronas, cada tarea se ejecutará tan pronto como la tarea anterior se haya completado.

Si estás usando callbacks para realizar operaciones asíncronas, en algunos casos puedes terminar teniendo demasiadas funciones anidadas, esto es lo que se llama el infierno de los callbacks. Demasiadas funciones anidadas pueden hacer que tu código sea ilegible e inmanejable. Puedes solucionarlo usando promesas, con las promesas puedes tener un código más legible y manejable.

Devuelve una promesa vacía

La plantilla de clase std::promise proporciona una facilidad para almacenar un valor o una excepción que más tarde se adquiere de forma asíncrona a través de un objeto std::future creado por el objeto std::promise. Ten en cuenta que el objeto std::promise está pensado para ser utilizado sólo una vez.

Cada promesa está asociada a un estado compartido, que contiene alguna información de estado y un resultado que puede no ser evaluado todavía, evaluado a un valor (posiblemente nulo) o evaluado a una excepción. Una promesa puede hacer tres cosas con el estado compartido:

La promesa es el extremo “push” del canal de comunicación promesa-futuro: la operación que almacena un valor en el estado compartido se sincroniza (como se define en std::memory_order) con el retorno exitoso de cualquier función que esté esperando en el estado compartido (como std::future::get). El acceso concurrente al mismo estado compartido puede entrar en conflicto de otro modo: por ejemplo, los múltiples llamadores de std::shared_future::get deben ser todos de sólo lectura o proporcionar una sincronización externa.

Espere en entonces javascript

Esperar a que se resuelva una promesa antes de devolverla en JSBorislav HadzhievÚltima actualización: Jul 25, 2022Foto de Danka & PeterEsperar a que una promesa se resuelva antes de devolver #Puedes usar la sintaxis async/await o llamar al método .then() sobre una promesa

no se ejecuta antes de que la promesa se haya resuelto o rechazado.Aunque nuestra función asíncrona aparentemente devuelve un número, en realidad devuelve una promesa. Todas las funciones asíncronas envuelven su valor de retorno en una promesa. Por eso hemos tenido que utilizar el método Promise.then para leer el valor de retorno de la función.Podrías conseguir el mismo resultado utilizando el método Promise.then() en su lugar

Comentarios

Para conocer el funcionamiento de las promesas y cómo puede utilizarlas, le aconsejamos que lea primero Uso de las promesas.DescripciónUna promesa es un proxy para un valor no necesariamente conocido cuando se crea la promesa. Permite asociar manejadores con el valor eventual de éxito o la razón de fracaso de una acción asíncrona. Esto permite que los métodos asíncronos devuelvan valores como los métodos síncronos: en lugar de devolver inmediatamente el valor final, el método asíncrono devuelve una promesa para proporcionar el valor en algún momento en el futuro.

Cuando se produce cualquiera de estas opciones, se llaman los manejadores asociados puestos en cola por el método then de una promesa. Si la promesa ya ha sido cumplida o rechazada cuando se adjunta un manejador correspondiente, el manejador será llamado, por lo que no hay una condición de carrera entre una operación asíncrona que se completa y sus manejadores que se adjuntan.

También oirás el término “resuelto” con las promesas – esto significa que la promesa está asentada o “bloqueada” para que coincida con el estado eventual de otra promesa, y resolverla o rechazarla no tiene ningún efecto. El documento Estados y destinos de la propuesta original de promesas contiene más detalles sobre la terminología de las promesas. Coloquialmente, las promesas “resueltas” suelen ser equivalentes a las promesas “cumplidas”, pero como se ilustra en “Estados y destinos”, las promesas resueltas también pueden estar pendientes o rechazadas. Por ejemplo: