Hola, agradecería se me explicara el tema del parámetro resolve, reject. Y por consiguiente el de response y err. Es decir, resolve y rej...

Pregunta de la clase:
Implementando Promesas
Horacio Demaría

Horacio Demaría

Pregunta
student
hace 5 años

Hola, agradecería se me explicara el tema del parámetro resolve, reject.

Y por consiguiente el de response y err.

Es decir, resolve y reject, son parámetros que incluso podrían tener nombres cualquiera.

Mi duda concreta es como frente a un resolve(“hey”) o reject(“whoops”) estos se pueden “disparar”, es decir, la consola los puede leer.

Porqué no poner sólo el string “Hey” sin el resolve por ejemplo

Por qué y cómo es posible que el parámetro oficie como una especia de “console.log” o “documen.write” por describirlo de alguna manera.

Si me pueden aclarar eso, estaré muy agradecio.

Y una vez hecho, agradezco también me expliquen como el parámetro response sabe que lo que está devolviendo es al parámetro resolve.

Desde ya, muchísimas gracias.

3 respuestas
para escribir tu comentario
    Luis Gerardo Colmenares

    Luis Gerardo Colmenares

    student
    hace 5 años

    Horacio, creo que entiendo tu duda, me basaré en el ejemplo de Jorge.

    El nombre del argumento de la función invocada por la promesa ("resolve") es totalmente independiente del argumento de la función que invoca el método ".then" (respuesta).

    Ahora, éstos dos se relacionan por lo siguiente: el "resolve(suma)" es la forma en que la promesa devuelve un resultado en caso de resolverse exitosamente (en este caso devuelve el array "list" con el método .map() aplicado). Y el "reject(error)" es la forma en que la promesa devuelve un resultado en caso de NO resolverse exitosamente (en este caso devuelve "Error de ejecución . . . :( ").

    Para poder acceder y manipular dichos resultados que nos devuelve la promesa usamos varios métodos luego de llamar la función. ".then" es el método usado para acceder al resultado que devuelve la promesa en caso de resolverse exitosamente (es decir, lo que arroja el "resolve()" ). Para poder usar dicho resultado, lo debemos pasar como parámetro a una función que será invocada por ".then". Éste parámetro puede llevar el nombre que queramos, pues sólo servirá para recibir el resultado de la promesa.

    Espero haber sido lo suficientemente explicito para resolver tu duda.

    Horacio Demaría

    Horacio Demaría

    student
    hace 5 años

    Muchas gracias, Jorge.

    Me ayudó bastante, de todas maneras sigue sin quedarme claro si es sólo una peculiaridad(por decirlo de alguna manera) de las promesas que argumentos con diferentes nombres(y que los podríamos poner nosotros, no necesariamente, resolve, reject, response, respuesta), se correlacionen o identifiquen entre si. Para tu ejemolo, que respueta(que es "sepa") que lo que ella retorna en su console.log será el resolve de arriba.

    Igual repito, me has ayudado bastante. Gracias

    Jorge Méndez Ortega

    Jorge Méndez Ortega

    student
    hace 5 años

    Hola @Horacio-demaria.

    En las promesas como comentas se aceptan 2 parametros los cuales como ya sabemos es resolve y reject estos funcionan para poder conseguir la respuesta de nuestra promesa.

    Resolve: Nos permite conseguir la respuesta de la promesa cuando esta es satisfactorio prácticamente cuando no se consigue ningún error.

    Reject: Nos permite conseguir la respuesta de la promesa cuando esta no es satisfactoria prácticamente cuando se genera un error.

    // Ejemplo const asincronia = (list) => { //declaracion de la promesa. let promise = new Promise( (resolve, reject) => { //se valida que el parametro list sea un arreglo //y no este vacio if (list instanceof Array && list.length > 0) { let suma = list.map(valor => Math.pow(valor, 2)); resolve(suma); } //si no se cumple la condicion se manda un error. else { let error = new Error("Error de ejecución . . . :( "); reject(error); } }); return promise; };

    Se lanza el código pero en esta parte esta lo interesante

    asincronia([2, 3, 4, 5]) .then( respuesta => console.log(respuesta)) // Aquí es donde lo que se mando en el resolve se muestra. .catch( error => console.error(error)); // Aquí es donde lo que se mando en el reject se muestra.

    Espero que esta breve explicación pueda aclarar tus dudas.😀

Curso de Asincronismo con JavaScript

Curso de Asincronismo con JavaScript

Apropia los conceptos fundamentales de asincronismo con JavaScript, aplica sus diferentes estructuras y desarrolla soluciones asíncronas. ¡Amplia tus conocimientos de programación aquí!

Curso de Asincronismo con JavaScript
Curso de Asincronismo con JavaScript

Curso de Asincronismo con JavaScript

Apropia los conceptos fundamentales de asincronismo con JavaScript, aplica sus diferentes estructuras y desarrolla soluciones asíncronas. ¡Amplia tus conocimientos de programación aquí!