我对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
答案 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);
}
});
}
}
希望这有帮助。