Como obter a segunda `then` parâmetro de retorno de chamada com async / esperam?

votos
1

Por exemplo

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

como eu ia traduzir isso com aguardam? Essa promessa vem de uma biblioteca para que eu não tenho controle sobre o fato de que o erro passa por then, em vez de catch. O que eu tenho é:

let data = await randomLibPromise.catch(err)

mas eu não obter esse segundo parâmetro e eu não posso recuperar o erro.

Cada exemplo que eu encontrar no Google falar catchpara o tratamento de erros, mas não then.

Publicado 19/09/2018 em 13:22
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Para "corrigir" a promessa estranho, você poderia apenas throw errse houver um, e returnos dados de outra forma:

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

O resultado será uma promessa que faz a coisa correta, ou seja, passa os dados para um then, um erro a um catchou, se aguardando, tanto retornos dataou lança o erro.

fixed.then(data => { /* handle data */ }).catch(err => { /* handle err */ });
// or
try {
    var data = await fixed;
    // handle data
} catch(err) {
    //handle err
}
Respondeu 19/09/2018 em 13:26
fonte usuário

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