Diferente manejo de errores en el constructor «Promise.resolve» vs «new Promise»

En JavaScript, hay dos formas de crear una promesa: usando el método Promise.resolve o usando el nuevo constructor Promise. Si bien ambas formas logran el mismo resultado, manejan los errores de manera diferente.

Promise.resolve: el método Promise.resolve toma un valor y devuelve una promesa que se resuelve con ese valor. Si el valor es una promesa, la promesa devuelta asumirá el estado de esa promesa. Si el valor es thenable (es decir, tiene un método .then), la promesa devuelta adoptará el estado de thenable.

Si el valor pasado a Promise.resolve no es una promesa o no se puede, la promesa devuelta se resolverá con el valor.

Promise.resolve se usa a menudo cuando no sabe si el valor es una promesa o no, o cuando desea asegurarse de que la promesa devuelta siempre se resuelva.

Para manejar errores con Promise.resolve, puede pasar una función como segundo argumento. Esta función se llamará si se rechaza la promesa.

Ejemplo: a continuación se muestra el código de trabajo completo para Promise.resolve con manejo de errores:

Javascript

Promise.resolve('value').then(function (value) {
    console.log("Resolved")
}).catch(function (error) {
    console.log("Error")
});

Producción:

Resolved

new Promise: El constructor new Promise toma una función como argumento. Esta función se llama con dos argumentos: resolver y rechazar. La función de resolución se usa para resolver la promesa con un valor y la función de rechazo se usa para rechazar la promesa con un error.

Si desea manejar errores con el nuevo constructor Promise, solo necesita pasar la función de rechazo. La función de resolución es opcional.

Ejemplo: a continuación se muestra el código de trabajo completo para el nuevo constructor Promise con manejo de errores:

Javascript

new Promise(function (resolve, reject) {
    var a = 1
  
    if (a == 2) {
        resolve('value');
    } else {
        reject('error');
    }
}).catch(function (error) {
    console.log("Error is resolved")
});

Producción:

Error is resolved

Si bien Promise.resolve y el nuevo constructor de Promise obtienen el mismo resultado, manejan los errores de manera diferente. Promise.resolve siempre devolverá una promesa resuelta, incluso si el valor pasado es una promesa rechazada. El nuevo constructor Promise solo devolverá una promesa que se rechace si se llama a la función de rechazo.

Si no está seguro de si el valor es una promesa o no, o si desea asegurarse de que la promesa devuelta siempre se resuelva, use Promise.resolve. Si desea manejar los errores con el nuevo constructor de Promise, solo necesita pasar la función de rechazo.

Publicación traducida automáticamente

Artículo escrito por imranalam21510 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *