Hvordan få andre `then` tilbakeringing parameter med async / venter?

stemmer
1

For eksempel

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

hvordan ville jeg oversette det med avvente? Dette løftet kommer fra et bibliotek slik at jeg ikke har kontroll over det faktum at feilen går gjennom theni stedet for catch. Hva jeg har er:

let data = await randomLibPromise.catch(err)

men jeg kan ikke få det andre parameter, og jeg kan ikke hente feilen.

Hver eksempelet jeg finner på Google snakke om catchfor feilbehandling, men ikke then.

Publisert på 19/09/2018 klokken 13:22
kilden bruker
På andre språk...                            


1 svar

stemmer
3

Å "fikse" rare lover, kan du bare throw errhvis det er en, og returnellers data:

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

Resultatet vil være et løfte som gjør den riktige tingen, dvs. sender dataene til en then, en feil i en catcheller, hvis venter, enten avkastning dataeller kaster opp feilen.

fixed.then(data => { /* handle data */ }).catch(err => { /* handle err */ });
// or
try {
    var data = await fixed;
    // handle data
} catch(err) {
    //handle err
}
Svarte 19/09/2018 kl. 13:26
kilden bruker

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