Правильно обрабатывать ошибки в async / await - PullRequest
0 голосов
/ 02 июня 2018

из того, что я прочитал, использование try/catch - это "правильный" способ обработки ошибок при использовании async/await.Тем не менее, я столкнулся с проблемой при попытке использовать ответ на запрос, если я поместил его в try/catch блок:

    try {
        async someMethod () {
            const result = await someRequest()
        }
    } catch (error) {
        console.log(error)
    }

    console.log(result) // cannot access `result` because it is not defined... 

. Поэтому, есть лучший способ обработки ошибок И иметь возможностьполучить доступ к ответам на async/await звонки?Единственный другой способ, которым я могу придумать, - это поместить ВЕСЬ кодовый блок внутрь блока try/catch ... но я чувствую, что есть более элегантный способ ...

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Либо вы должны объявить переменную вне области блока, либо просто не использовать ключевое слово перед результатом.Таким образом, он станет глобальной переменной, и вы сможете получить к ней доступ вне кода блока.Вы можете написать это так: -

try {
    async someMethod () {
        result = await someRequest()
    }
} catch (error) {
    console.log(error)
}

console.log(result)

Или вы можете использовать более короткий метод вместо try catch, чтобы сделать код чище, и вы также можете узнать, откуда возникла ошибка.

async someMethod () {
        result = await someRequest().catch(err=>{
            console.log(err)
        })
}
console.log(result)
0 голосов
/ 02 июня 2018
(async () => {
  result = null;
  async someMethod(){
    result = await someRequest();
  }
  console.log(result)
})()
.catch(error => console.log(error));
...