2016-08-18 42 views
0

我对JavaScript/TypeScript很陌生(尽管如此,我用C#,Java等OOP语言做得非常好),特别是我对回调函数有些困惑当涉及到与BaaS ParseDB一起使用它们时。解析DB临时存储查询结果

例子:查找某个用户的所有播放列表,需要这样一个查询:

var query = new Parse.Query(Playlist); 

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

现在,我的那个问题是,所装载的usersPlaylists是在回调函数中只是有效。我不认为有可能将它们存储在我自己的某些对象中。

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

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

由于提前, Tukk

回答

0

可以通过使用箭头功能保持的“本”的上下文(和因此具有访问其他类字段/方法)例如存储结果:

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); 
      } 
     }); 
    } 
} 

希望这会有所帮助。

+0

这接近我正在寻找的解决方案。编辑它,因为它为我工作。非常感谢你 :) – Tukk