React Validation Async всегда возвращает обещание{‹ожидание›}

Итак, я делаю базовую проверку в своем приложении 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>}.

Благодарю вас!


person Eddsters    schedule 21.03.2021    source источник
comment
Функция async всегда будет возвращать Promise. Он неявно оборачивает ваш errors в Promise перед его возвратом.   -  person Lakshya Thakur    schedule 21.03.2021
comment
@LakshyaThakur Спасибо, так как я могу решить эту проблему, чтобы вместо обещания я действительно возвращал объект?   -  person Eddsters    schedule 21.03.2021
comment
stackoverflow.com/questions/ 49982058/   -  person Taki    schedule 21.03.2021
comment
@Eddsters Либо используйте validation(values).then((err)=>..), либо const errors = await validation(values) внутри другой функции async.   -  person Lakshya Thakur    schedule 21.03.2021
comment
Это нормально иметь асинхронную функцию проверки (та, которая возвращает промис) в форме реакции-окончания. Попробуй это! <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