解析DB临时存储查询结果

时间:2016-08-18 19:18:39

标签: javascript typescript callback

我对JavaScript / TypeScript很陌生(尽管如此,我在使用像C#,Java这样的OOP语言时做得很好......)我对回调函数有点困惑,特别是在使用它们时使用BaaS ParseDB。

示例:查找特定用户的所有播放列表需要像这样的查询:

    var query = new Parse.Query(Playlist);

    query.equalTo("user", user);
    query.find({
        success: function (usersPlaylists: Array<Playlist>)
        {
            alert("Playlists loaded: " + usersPlaylists.length);
        }
    });
}

现在,我的问题是,加载的usersPlaylists在回调函数中才有效。我认为没有任何可能将它们存储在我自己的一些物体中。

到目前为止,我尝试过的是创建一个包含播放列表对象数组的对象,并将查询结果中的每个元素分配给该对象数组。但它没有成功,因为在回调函数完成后,对象数组突然有0个元素。

在我的一个对象中存储的原因是,我不想查询可以完成的每个小操作的播放列表。例如。用户想知道,如果有一个包含超过5个元素的列表?我只需要我的本地列表并在那里查看,而不是再次进行查询。

提前致谢, Tukk

1 个答案:

答案 0 :(得分:0)

您可以通过保留&#39; this&#39;的上下文来存储结果。 (因此可以访问其他类字段/方法),例如使用箭头函数:

class PlayListContainer
{
    private m_localList: Array<Playlist>;

    constructor()
    {
        this.m_localList = [];
    }

    public find()
    {   
        var query = new Parse.Query(Playlist);

        query.equalTo("user", user);

        query.find({
            success: (usersPlaylists: Array<Playlist>) =>
            {
                this.m_localList.concat(usersPlaylists);
            }
        });
    }
}

希望这有帮助。