我有一个模块,其中包含使用axios以异步方式获取数据的方法。
services.js
import axios from 'axios';
class Services {
static callAPI(params) {
var headers = {
'Accept': 'application/json'
}
axios({
method:'get',
url: params.url,
headers: headers
})
.then(function(response) {
return response;
});
}}export { Services }
我将此模块导入我的组件模块A.js
A.js
class Modules extends Component {
componentDidMount(){
this.getData().then(function(response){
console.log(response);
});
}
getData(){
var prom = new Promise(function (resolve, reject) {
resolve(Services.callAPI({url: Paths.localAPIPath() + '/module',accept: 'application/json'}));
});
return prom;
}
render() {
return (
<p></p>
)
}}export default Modules
我在网络选项卡中看到我的异步方法调用,但是无法控制响应,我做错了还是什么?
在控制台中获取未定义,这意味着数据丢失或对console.log的调用是同步的。
总结所有这一切 如何使用本机promise方法从另一个异步函数异步获取另一个模块文件中的数据。
答案 0 :(得分:2)
更改您的df = df[(df['e_id'] != '') | (df['r_id'] != '')]
e_id = df.e_id.values
r_id = df.r_id.values
df['sym'] = np.where(e_id != '', e_id, r_id)
print (df)
e_id r_id sym
0 101 101
1 502 502
2 103 103
3 504 504
4 105 105
5 506 506
方法,使其实际返回某些内容(并删除无用的callAPI
):
then
更改您的static callAPI(params) {
var headers = {
'Accept': 'application/json'
}
return axios({
method:'get',
url: params.url,
headers: headers
})
}
方法,使其返回getData
的值(您在该方法中拥有的所有内容都无用):
callAPI
应该这样做。