从promise对象查询属性并保存在变量中

时间:2019-06-20 12:26:34

标签: typescript promise axios factory-pattern

我正在使用axios get请求,并返回response.data的对象。但是我希望能够查询response.data的属性并将其保存为变量,并在另一个类中使用它。

export class myClass {
    public async getData() {
        return axios.get(url)
            .then(response => response.data)
            .catch((error) => {
                console.log(error);
            });
        }
    }

我想从响应中访问这些属性,并另存为值:

response.data.name
response.data.address
response.data.company

我可以控制台记录属性,但是如果我尝试将其用作某个地方的值,我将无法定义。

public async getName() {
    return this.getData().then((response: any) => {
        console.log(response.data.name);
        return response.data.name;
    });
}

致电:

const name = new myClass().getName();
NAME: name(undefined)

1 个答案:

答案 0 :(得分:0)

默认情况下,async函数返回一个Promise,您应该以这种方式实现它,这更容易理解:

myClass

export class myClass {
    ...
    public async getData() {
        return axios.get(url);
    }

    public async getName() {
        try {
            const response = await this.getData();
            return response.data.name;
        } catch (error) {
            // handle errors here
        }
    }
    ...
}

调用getName()

const myClass = new myClass();
const name = await myClass.getName();