Come ottenere il secondo `then` parametro di callback con async / attendere?

voti
1

Per esempio

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

come potrei tradurre quello con aspettano? Questa promessa viene da una libreria in modo da non avere il controllo sul fatto che l'errore passa attraverso thenanziché catch. Quello che ho è:

let data = await randomLibPromise.catch(err)

ma non ottengo che secondo parametro e non riesco a recuperare l'errore.

Ogni esempio che trovo su Google parlare catchper la gestione degli errori, ma non then.

È pubblicato 19/09/2018 alle 13:22
fonte dall'utente
In altre lingue...                            


1 risposte

voti
3

Per "fissare" la promessa strano, si può solo throw errse ce n'è uno, e returni dati altrimenti:

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

Il risultato sarà una promessa che fa la cosa giusta, cioè passa i dati ad una then, un errore a una catcho, se in attesa, sia i rendimenti datao genera l'errore.

fixed.then(data => { /* handle data */ }).catch(err => { /* handle err */ });
// or
try {
    var data = await fixed;
    // handle data
} catch(err) {
    //handle err
}
Risposto il 19/09/2018 a 13:26
fonte dall'utente

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