Comment obtenir le second paramètre `then` de rappel avec async / attendre?

voix
1

Par exemple

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

comment pourrais - je traduire avec await? Cette promesse vient d'une bibliothèque , donc je n'ai pas de contrôle sur le fait que l'erreur passe par la thenplace de catch. Ce que j'est:

let data = await randomLibPromise.catch(err)

mais je ne comprends pas que deuxième paramètre et je ne peux pas récupérer l'erreur.

Chaque exemple que je trouve sur Google parle de la catchgestion des erreurs , mais pas then.

Créé 19/09/2018 à 13:22
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
3

Pour « corriger » la promesse bizarre, vous pouvez simplement throw errs'il y a un, et returnles données autrement:

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

Le résultat sera une promesse qui fait la bonne chose, à savoir transmet les données à un then, une erreur à un catchou, si l' attente, que ce soit des rendements dataou jette l'erreur.

fixed.then(data => { /* handle data */ }).catch(err => { /* handle err */ });
// or
try {
    var data = await fixed;
    // handle data
} catch(err) {
    //handle err
}
Créé 19/09/2018 à 13:26
source utilisateur

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