Я изо всех сил пытаюсь решить проблему со следующим синтаксисом:
export const sendVerificationEmail = async () =>
(dispatch) => {
try {
dispatch({ type: EMAIL_FETCHING, payload: true });
await Auth.sendEmailVerification();
dispatch({ type: EMAIL_FETCHING, payload: false }))
} catch (error) {
dispatch({ type: EMAIL_FETCHING, payload: false });
throw new Error(error);
}
};
Я все время получаю сообщение об ошибке:
ожидание - зарезервированное слово
... но разве это не законно в асинхронной функции?
Бит отправки поступает из библиотеки response-thunk .
(dispatch) =>
, и это не асинхронно. Почему у вас естьsendVerificationEmail
возврат другой функции вместо выполнения какого-либо действия?async (dispatch) =>
вы могли опубликовать это в качестве ответа, мне нужно вернуть его, чтобы получить доступ к отправке,Ответы:
Для использования
await
функция, непосредственно включающая его, должна быть асинхронной. Согласно вашему комментарию, добавлениеasync
к внутренней функции устраняет вашу проблему, поэтому я опубликую это здесь:export const sendVerificationEmail = async () => async (dispatch) => { try { dispatch({ type: EMAIL_FETCHING, payload: true }); await Auth.sendEmailVerification(); dispatch({ type: EMAIL_FETCHING, payload: false })) } catch (error) { dispatch({ type: EMAIL_FETCHING, payload: false }); throw new Error(error); } };
Возможно, вы могли бы удалить
async
из внешней функции, потому что она не содержит никаких асинхронных операций, но это будет зависеть от того,sendVerificationEmail
ожидает ли вызывающийsendVerificationEmail
объект вернуть обещание или нет.источник