这是我的第一个使用AWS API网关的应用程序,当我在componentDidMount中调用该函数时,我能够提取数据,现在我从我的组件类中调用这个模块
:account
和apiCall是methods.js
中的一个函数componentDidMount (){
// debugger
this.setState({apiData: apiCall(this.state.testSearch) })
this.updateAPIdata()
}
当我调试代码时,所有正确的变量都传递给apigClient.invokeApi,但它永远不会转到then函数,只是跳转到apiCall函数的最后一个闭合}。这是意料之外的,就像以前一样调试下一个(函数(结果)。
)我是否将该功能称为错误或其他新手错误?当代码与componentDidMount在同一个.js文件中时,此代码有效。
答案 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)
}
`
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<license file="EULA.pdf" />
...
</installer-gui-script>