Reactjs 使用异步等待调度

Reactjs 使用异步等待调度,reactjs,react-native,redux,Reactjs,React Native,Redux,我在react native中通过使调度异步来修补异步等待。如下图所示,使调度异步是否有任何错误或问题?它似乎能工作(除了它是一个多填充)。如果这种方法没有问题的话,我想它对react native可能会非常有效 export function fetchData(date, lng, lat){ const {year, month} = date; return async(dispatch) => { dispatch(requestData()) try {

我在react native中通过使调度异步来修补异步等待。如下图所示,使调度异步是否有任何错误或问题?它似乎能工作(除了它是一个多填充)。如果这种方法没有问题的话,我想它对react native可能会非常有效

export function fetchData(date, lng, lat){
  const {year, month} = date;
  return async(dispatch) => {
    dispatch(requestData())
    try {
      const data = await request(`http://data.police.uk/api/crimes-street/all-crime?lat=${lat}&lng=${lng}&date=${year}-${month}`)
      dispatch(recieveData(data))
    } catch (err) {
      dispatch(requestError(err))
    }
  }
} 

这应该可以很好地工作(假设您的中间件中有
reduxthunk
)。我在几个React/Redux应用程序中使用了类似的方法(承诺而不是异步/
等待

还有一个
redux承诺
,但我发现它不够充分,原因有两个:没有“开始”操作,也没有办法设置异步操作经常需要的
meta
。因此,我更喜欢显式地分派操作,而不是像您的代码那样分派承诺。

我使用以下模式:

const result = (res) => {
        if (!res.result) {
          this.setState({
            ...this.state,
            Valid: false
          });
        }
      };


AsyncFn(this.props.dispatch, field , result);



export async function AsyncFn(dispatch, field, Callback) {
  try {
    const response = await (
      request.post(url)
    );

    if (response && response.body) {
      if (response.body.result) {
        dispatch(Auth());
        dispatch(openModal());
      } else {
        Callback(response.body);
      }
    } else {
      Callback({ result: false, message: 'Not valid' });
    }
  } catch (err) {
    Callback({ result: false, message: err.message });
  }
}