不能在异步函数外使用关键字“ await”

时间:2019-09-22 20:19:54

标签: reactjs redux react-redux

当前,我想对我的函数实现Redux,因此它将存储在initialstate中。为此,我必须使用一个调度方法,该方法在函数内部调用该动作。因此,预期的结果是我可以使用Redux调度response.data.results,因此可以基于该结果在每个图像上添加一个like按钮。但这是一个稍后将解决的问题,因为我现在想重构代码,以便该函数将根据已提交的关键字或字母来调度数据。但是console.log显示错误:

  

不能在异步函数外使用关键字“ await”

  onSearchSubmit = async term => {  
    return(dispatch) => {
      const response = await unsplash.get('/search/photos', {
        params:{ query: term },
        //use the path on unsplash for image searching
      });
      
      dispatch(fetchImages(response.data.results));
      // this.setState({ images: response.data.results });
    }
    
  }

  render() {
    return (<div className="ui container" style={{marginTop:'10px'}}> 
      <SearchBar onSubmit={this.onSearchSubmit}/>
      {/* <ImageList images={this.state.images}/> */}
    </div>);
  }

2 个答案:

答案 0 :(得分:0)

return(dispatch) => {
  const response = await unsplash.get('/search/photos', {
    params:{ query: term },

您将返回一个非异步函数并在其中调用await。尝试使其异步:

return async (dispatch) => {
  const response = await unsplash.get('/search/photos', {
    params:{ query: term },

答案 1 :(得分:0)

您的错误所指的await在匿名lambda函数(dispatch) => {...中,而不是onSearchSubmit中。使该lambda异步,然后一切都会好起来。