programing

Wait는 비동기 함수 내부의 예약된 단어 오류입니다.

newsource 2023. 3. 21. 22:12

Wait는 비동기 함수 내부의 예약된 단어 오류입니다.

다음 구문에서 문제를 파악하는데 어려움을 겪고 있습니다.

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

다음과 같은 오류가 계속 발생합니다.

wait는 예약어이다

하지만 비동기 기능에서는 합법적이지 않나요?

디스패치 비트는 리액트 트렁크라이브러리로부터 송신됩니다.

사용하기 위해서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()약속을 지킬지 말지 기대하고 있습니다.

솔루션

를 사용합니다.await사용 중인 범위 내에서 직접async상단 스코프를 제거합니다.async용장성이 있기 때문에.

올바른 쓰기 방법:

const sendVerificationEmail = () =>
  async (dispatch) => {
    await Auth.sendEmailVerification();
    // some code..
  };

정교

에러가 발생한 것은,await키워드를 지정하지 않고async와의 직접 범위 내에서await, 2개의 기능이 있습니다.하나는 다른 하나의 내부로,async안쪽이 아니라 윗부분이 중요하죠

잘못된 방법:

const sendVerificationEmail = async () =>
  // notice that an async before the (dispatch) is missing
  (dispatch) => {
    await Auth.sendEmailVerification();
    // some code..
  };

여기서 오류가 생성됩니다(Chrome에서 사용 가능한 최신 오류).

Uncaught SyntaxError: await is only valid in async functions and the top level bodies of modules

언급

Async Functions

비동기 함수는 async 키워드로 선언된 함수로, 그 안에서 wait 키워드를 사용할 수 있습니다.async 키워드 및 wait 키워드를 사용하면 비동기 약속 기반의 동작을 보다 깨끗한 스타일로 기술할 수 있으므로 약속 체인을 명시적으로 설정할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/42299594/await-is-a-reserved-word-error-inside-async-function