Ожидание - это зарезервированная ошибка слова внутри функции async

Я пытаюсь выяснить проблему с помощью следующего синтаксиса:

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);
    }
  };

Я получаю сообщение об ошибке:

ждать это зарезервированное слово

... но разве это не законно в рамках асинхронной функции?

Бит отправки поступает из библиотеки реагирования.

Ответы

Ответ 1

Чтобы использовать 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 sendVerificationEmail чтобы возвратить обещание или нет.