Как определить, какое обещание выдает ошибку (в цепочке обещаний) - PullRequest
0 голосов
/ 31 октября 2018

Как определить, какое из трех обещаний вызвало ошибку?

Приведенный ниже код псевдо, но в моем собственном коде я работаю со сторонними библиотеками (Stripe и Firebase) и поэтому не могу изменить сами обещания.

Я подумал, что смогу проверить, содержит ли аргумент error в catch конкретное значение (например, в Stripe есть очень подробный объект ошибки), но, несомненно, должен быть лучший способ.

return async.func.one.doIt()
  .then(() => {
    return async.func.two.doIt();
  })
  .then(() => {
    return async.func.three.doIt();
  })
  .then(() => {
    return { success: true };
  })
  .catch((error) => {
    // How do I know which 'then' caused
    // the catch to invoke?
  });

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

вы можете изменить свой код на этот return func.one.doIt() .then(() => { return async.func.two.doIt().then(() => { return async.func.three.doIt().then(() => { return { success: true }; }).catch((error) => { // How do I know which 'then' caused // the catch to invoke? });; }).catch((error) => { // How do I know which 'then' caused // the catch to invoke? }); }).catch((error) => { // How do I know which 'then' caused // the catch to invoke? });

0 голосов
/ 31 октября 2018

Вы можете поместить '.catch' между каждым методом '.then', чтобы поймать ошибку. Он должен отловить ближайшую ошибку, выданную любым из предыдущих обещаний, вплоть до следующего метода .catch.

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