redux Await是一个保留字错误,在pwtc函数中

yk9xbfzb  于 6个月前  发布在  其他
关注(0)|答案(2)|浏览(69)

我正在努力解决以下语法的问题:

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

字符串
我不断得到错误说:
await是保留字
.但这不是法律的在一个联邦调查局的职能?
调度位来自react-thunk库。

zy1mlcev

zy1mlcev1#

为了使用await,直接封装它的函数需要是cndc。根据你的评论,将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()的调用者是否期望它返回一个promise。

wj8zmpe1

wj8zmpe12#

解决方案

直接在使用async的范围内使用await,并删除顶部范围async,因为它是冗余的。

正确的写法是:

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

字符串

Escene

你有错误,因为你使用await关键字没有async直接在作用域与await,你有两个函数,一个在另一个里面,你有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第一个字符

一个promise函数是一个使用promise关键字声明的函数,并且允许在其中使用await关键字。promise和await关键字使异步的、基于promise的行为能够以更干净的风格编写,从而避免了显式配置promise链的需要。

相关问题