【问题标题】:Can not use keyword 'await' outside an async function不能在异步函数之外使用关键字“等待”
【发布时间】:2020-01-22 23:18:46
【问题描述】:

目前我想在我的函数中实现 Redux,所以它将存储在初始状态中。为此,我必须使用调用函数内部操作的调度方法。所以预期的结果是我可以使用 Redux 发送 response.data.results,因此基于该结果我可以在每个图像上添加一个赞按钮。但这是一个稍后会解决的问题,现在我想重构代码,以便函数根据已提交的关键字或字母调度数据。但是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>);
  }

【问题讨论】:

    标签: reactjs redux react-redux


    【解决方案1】:

    您的错误所指的await 是匿名lambda 函数(dispatch) =&gt; {... 而不是onSearchSubmit。使 lambda 异步,一切都会好起来的。

    【讨论】:

      【解决方案2】:
      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 },
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-15
        • 2020-02-17
        • 2017-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        相关资源
        最近更新 更多