В функции catch возвращается отклоненное обещание, а разрешенное - нет? - PullRequest
0 голосов
/ 03 июля 2019

Моя функция caller вызывает функцию parent, которая сама вызывает child.Если child ошибки, то мне нужно вернуться к caller.

Когда я reject обещание, это работает, однако, когда я пытаюсь вернуть обещание resolve, оно не возвращается caller

function caller() {
  return parent()
}       

async function parent(){
  const child = await foo(
    // more code
  ).catch(error=>{
    if(error === 123) {
      return Promise.resolve("This was resolved"); 
    }
    return Promise.reject("This was rejected");
  })
}

Я думаю, что блок try / catch будет работать, но я предпочитаю синтаксис выше.

1 Ответ

0 голосов
/ 03 июля 2019

Проблема в том, что вы не возвращаете child из parent.

Вот простой пример,

function caller() {
    return parent()
}

 async function parent() {
    const child = await foo()
    .catch(error => {
        if (error === 123) {
            return Promise.resolve("This was resolved");
        }
        return Promise.reject("This was rejected");
    })
    return child;
}

function foo(){
    return Promise.reject(123);
}
caller().then(console.log);//This was resolved

Примечание: с последующим смешиванием async/await с then/catch вообще не рекомендуется. Но я думаю, что очевидная причина - читабельность.

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