Como llegar a la segunda then` parámetro `devolución de llamada asincrónica con el / la espera?

votos
1

Por ejemplo

randomLibPromise.then((data, err) => { // do something with err })

¿cómo iba a traducir eso con lo esperan? Esta promesa proviene de una biblioteca, así que no tengo control sobre el hecho de que el error pasa por thenen lugar de catch. Lo que tengo es:

let data = await randomLibPromise.catch(err)

pero no consigo que el segundo parámetro y no puedo recuperar el error.

Todos los ejemplos que encuentro en Google hablar de catchtratamiento de errores, pero no then.

Publicado el 19/09/2018 a las 13:22
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Para "fijar" la promesa raro, sólo podría throw errsi no es uno, y returnlos datos de otro modo:

var fixed = randomLibPromise.then((data, err) => { 
    if(err) throw err;
    return data;
})

El resultado será una promesa que hace lo correcto, es decir, pasa los datos a un then, un error a una catcho, si la espera, o bien vuelve datao lanza el error.

fixed.then(data => { /* handle data */ }).catch(err => { /* handle err */ });
// or
try {
    var data = await fixed;
    // handle data
} catch(err) {
    //handle err
}
Respondida el 19/09/2018 a las 13:26
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more