Можно ли в JavaScript поставить условие на выполнение .then(Разрешение промиса)?
Возникла необходимость поставить условие на .then
Если конкретней, то есть ряд промисов. Вот код(.min и .max, .required это промисы. Просто библиотека которой я пользуюсь заменят слово then:
const inputSchema = Yup.object().shape({
[props.id] : Yup[props.dataType]()
.min(props.minLength, 'Недостаточно символов')
.max(props.maxLength, 'Много символо')
.required(props.required)
})
Из этого должно получится что то типа(псевдокод с условием if)
const inputSchema = Yup.object().shape({
[props.id] : Yup[props.dataType]()
.min(props.minLength, 'Недостаточно символов')
.max(props.maxLength, 'Много символо')
if(props.required) {return .required(props.required)} else return ''
})
Конкретно вот эта строка
if(props.required) {return .required(props.required)} else return ''
т.е. если условие выполнено, то выставляем разрешение промиса
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
Достаточно вынести сбор промиса из вызова функции. В этом случае можно использовать обычный if
var promise = Yup[props.dataType]()
.min(props.minLength, 'Недостаточно символов')
.max(props.maxLength, 'Много символо');
if (props.required)
promise = promise.required(props.required)
И дальше передать в вызов функции
const inputSchema = Yup.object().shape({
[props.id] : promise
})