aws api网关客户端没有执行。然后,它只是退出apigClient函数

时间:2018-05-20 20:14:50

标签: node.js amazon-web-services react-native aws-api-gateway

这是我的第一个使用AWS API网关的应用程序,当我在componentDidMount中调用该函数时,我能够提取数据,现在我从我的组件类中调用这个模块

:account

和apiCall是methods.js

中的一个函数
componentDidMount (){
  // debugger
  this.setState({apiData: apiCall(this.state.testSearch) })
this.updateAPIdata()

}

当我调试代码时,所有正确的变量都传递给apigClient.invokeApi,但它永远不会转到then函数,只是跳转到apiCall函数的最后一个闭合}。这是意料之外的,就像以前一样调试下一个(函数(结果)。

我是否将该功能称为错误或其他新手错误?当代码与componentDidMount在同一个.js文件中时,此代码有效。

1 个答案:

答案 0 :(得分:1)

问题是,只有在解析了API的响应后才会返回结果,这会异步发生。

有两种方法可以解决此问题

  • 使用回叫

`

async componentDidMount() {
  try {
    const data = await apiCall(this.state.testSearch)
    this.setState({apiData: data})
    this.updateAPIdata()
  } catch(e) {
    //Handle error
  }
 }

 async function apiCall(searchInput) {
   //...Your code
   const result = await apigClient.invokeApi(params, pathTemplate, method, additionalParams)
   return JSON.parse(result)
 }
  • 使用async await(my pref)

`

<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
    <license file="EULA.pdf" />
    ...
</installer-gui-script>