Итак, я делаю базовую проверку в своем приложении React. Я использую форму реакции-окончания, и что делает проверка, она возвращает объект ошибок, если они существуют. Для одного набора проверки я использую асинхронную функцию, и она всегда возвращает Promise{<pending>}
. Я не уверен, почему, потому что все мои методы ожидания закрыты с помощью .then()
; Пожалуйста, взгляните на мой код:
async function checkEmail(email) {
const result = await axios
.post(`/api/check-email`, { values: email })
.then(e => e.data.exists);
return result;
}
// main validation object
const validation: async values => {
const errors = {};
if(!values.email) {
errors.email = "Email is required"
} else {
const response = await checkEmail(values.email).then(e => { return e; });
if(response) {
errors.email = "Email taken!"
}
}
return errors;
}
После того, как электронное письмо проверено и если ответ возвращает false, проверка должна вернуть пустой объект, например {}
, однако он возвращает Promise {<pending>}
.
Благодарю вас!
async
всегда будет возвращатьPromise
. Он неявно оборачивает вашerrors
вPromise
перед его возвратом. - person Lakshya Thakur   schedule 21.03.2021validation(values).then((err)=>..)
, либоconst errors = await validation(values)
внутри другой функцииasync
. - person Lakshya Thakur   schedule 21.03.2021<Form validate={async (values) => { const errors = {} if(!values.email) { errors.email = "Email is required"; } else { const taken = await checkEmail(values.email); if(taken) { errors.email = "Email taken!" } } return errors; }}
- person Linda Paiste   schedule 22.03.2021