Как исправить ошибку синтаксического анализа: нельзя использовать ключевое слово «await» вне асинхронной функции - PullRequest
0 голосов
/ 07 мая 2019

Получение сообщения об ошибке с кодом Parsing error: Can not use keyword 'await' outside an async function снизу кода для действия Redux.

Как правильно написать это?

export async function getData() {
  return (dispatch) => {
    try {
      const data = await API.graphql(graphqlOperation(query))
      dispatch({ type: "DATA_AVAILABLE", data: data.data.listData.items });
    } catch(err) {
      console.log('error: ', err)
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Вы можете также извлечь функцию ожидания из функции возврата и передать dispatch в качестве параметра функции getData.

export async function getData(dispatch) {
  const data = await API.graphql(graphqlOperation(query))
  dispatch({ type: "DATA_AVAILABLE", data: data.data.listData.items });
}

тогда вы называете это:

var dispatchFunc = function (params) {console.log(params);}
getData(dispatchFunc).then(function() {}).catch(function(err) { ... })
0 голосов
/ 07 мая 2019

Вам необходимо иметь ключевое слово async для функции inner

export function getData() {
  return async (dispatch) => {
    try {
      const data = await API.graphql(graphqlOperation(query))
      dispatch({ type: "DATA_AVAILABLE", data: data.data.listData.items });
    } catch(err) {
      console.log('error: ', err)
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...