запросить свойства объекта обещания и сохранить в переменной - PullRequest
0 голосов
/ 20 июня 2019

Я использую запрос получения axios и возвращаю объект 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 голосов
/ 20 июня 2019

По умолчанию функция 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();
...