Как правильно вернуть Promise в Javascript?

Здравствуйте, как правильно обыграть такую ситуацию:
пишу асинхронную функцию проверки(валидации) входящего JSON и не пойму как правильно вернуть promise, т.е. несколько вариантов:
1. что-то типа
return new Promise((resolve, reject) => {
...
if(valid) { resolve(...) } else { reject(errors) }
})

и потом ловить через await try catch или .then() .catch()
или обойтись без reject
2.
return new Promise((resolve) => {
...
if(valid) { resolve() } else { resolve(errors) }
})

и ловить так
const error = await ValidationFunc()
if(error){...} else {...}


Т.е. оба варианта работают одинаково верно, но все-таки пытаюсь понять, как будет семантически правильнее и при каких ситуациях использовать тот или иной вариант
  • Вопрос задан
  • 1213 просмотров
Решения вопроса 1
mtix
@mtix
Front-end developer
По моему мнению нужно использовать первый вариант.
Вся суть Promise, что с начального состояния мы можем перейти в состояние
* выполнено (fulfilled): операция завершена успешно.
* отклонено (rejected): операция завершена с ошибкой.

по логике, если возникла ошибка при асинхронной операции, то мы должны сделать reject(errors) и в дальнейшем обработать исключение в catch().

Второй вариант может неправильно отработать в цепочке Promise.all(iterable), когда нужен явно выполненный результат несколько Promise.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы