2016-08-18 2 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는 콜백 함수 내에서 단지 유효한지 : 특정 사용자에 대한 모든 재생 목록을 찾기는 이와 같은 질의를 필요로한다. 내 물건 중 일부에 저장할 수있는 가능성이 없습니다.

지금까지 시도한 것은 재생 목록 개체 배열을 사용하여 개체를 만들고 쿼리 결과의 각 요소를 해당 개체 배열에 할당하는 것이 었습니다. 하지만 콜백 함수가 끝난 후 객체 배열에 갑자기 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

이것은 내가 찾던 해결책에 가깝습니다. 그것이 나를 위해 일한대로 editted. 고마워요 :) – Tukk