如何从另一个模块中的异步函数获取Promise返回对象

时间:2017-05-03 05:59:09

标签: javascript reactjs promise

我有一个模块,其中包含使用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方法从另一个异步函数异步获取另一个模块文件中的数据。

1 个答案:

答案 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

应该这样做。