Automati c ошибка передачи на асин c функции - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть какая-то функция async, которая внутри ожидает некоторых обещаний, которые могут быть отклонены, и я хочу передать все ошибки возвращенному обещанию функции. JS делает ли это автоматически?

Например:

async foo(){
  bar_result = await bar();
  baz_result = await baz();
  return 'ok';
}

foo()
  .then(console.log)
  .catch(console.error);

Что произойдет в приведенном выше примере, если либо bar(), либо baz() будет отклонено? Интуитивно понятно, что они попадают в строку .catch(console.error) ...

Моя альтернативная идея - заключить содержимое функции в блок try, а затем catch(err){ throw err; }, но это выглядит избыточно ...

1 Ответ

2 голосов
/ 27 февраля 2020

Внутри функции async, если Обещание имеет значение await ed, и это Обещание отклоняется, функция немедленно завершается, а возвращаемое Обещание отклоняется (с тем же значением отклоненного await ed обещание). Ваша функция будет работать так, как вам нужно - если bar или baz отклоняет, console.error приведет к регистрации отклонения (и console.log не будет вызываться).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...