有没有办法返回我的json对象

问题描述 投票:1回答:1

我最近正在编写一个Javascript Web应用程序,用户可以在其中浏览公共instagram个人资料并下载图像。

因此,我正在使用Json对象,该对象存储来自用户个人资料的所有信息。

我的功能如下:

receiveProfile(username) {
        var url = "https://www.instagram.com/" + username + "/?__a=1";

        var resultObject;

        fetch(url).then(function (response) {
            return response.json();
        }).then(function (data) {

            resultObject = new UserProfile(
                data.graphql.user.full_name,
                data.graphql.user.biography,
                data.graphql.user.profile_pic_url,
                data.graphql.user.external_url,
                data.graphql.user.edge_owner_to_timeline_media.edges,
                data.graphql.user.edge_followed_by,
                data.graphql.user.edge_follow
            );

            return resultObject;
        }).catch(function () {
            console.log("Booo");
        });

        return resultObject;
    }

我有一个名为“ JsonService”的对象的实例,该实例获取此方法的返回值,换句话说,是某个用户的UserProfile。然后,UserProfile将被存储为我的JsonService的字段。但是当我设定自己的领域时this.userProfile = receiveProfile(username);并尝试对其进行console.log,它在我的浏览器中始终显示“未定义”。

如何正确地将对象传递给JsonService的字段。

javascript jquery json ajax instagram
1个回答
0
投票

fetch()方法返回一个fetch()解析为Promise该请求,无论请求是否成功。

Promise函数在Response块完成之前返回Response(最初未定义)。它应该等待诺言解决。

您有2个选项:

1。使用异步/等待

receiveProfile

演示:

resultObject

2。没有异步/等待

fetch()

演示:

async receiveProfile(username) {
    const url = `https://www.instagram.com/${username}/?__a=1`;

    const response = await fetch(url);

    if (response.status !== 200) {
        throw new Error(response.status);
    }

    const data = await response.json();

    return new UserProfile(
        data.graphql.user.full_name,
        data.graphql.user.biography,
        data.graphql.user.profile_pic_url,
        data.graphql.user.external_url,
        data.graphql.user.edge_owner_to_timeline_media.edges,
        data.graphql.user.edge_followed_by,
        data.graphql.user.edge_follow
    );
}
© www.soinside.com 2019 - 2024. All rights reserved.