Как получить второй параметр обратного вызова `then` с помощью async / await? - PullRequest
0 голосов
/ 19 сентября 2018

Например,

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

как бы я перевел это с await?Это обещание исходит из библиотеки, поэтому я не могу контролировать тот факт, что ошибка проходит через then вместо catch.У меня есть:

let data = await randomLibPromise.catch(err)

, но я не получаю второй параметр и не могу получить ошибку.

Каждый пример, который я нашел в Google, говорит о catch дляобработка ошибок, но не then.

1 Ответ

0 голосов
/ 19 сентября 2018

Чтобы "исправить" странное обещание, вы можете просто throw err, если он есть, и return данные в противном случае:

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

Результатом будет обещание, которое делает правильную вещьто есть передает данные в then, ошибка в catch или, если ожидает, либо возвращает data, либо выдает ошибку.

fixed.then(data => { /* handle data */ }).catch(err => { /* handle err */ });
// or
try {
    var data = await fixed;
    // handle data
} catch(err) {
    //handle err
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...