2014-07-11 7 views
2

비동기 함수에 대한 많은 질문을 Stackoverflow 및 값 반환 방법을 읽었지만 내 프로젝트에 이러한 힌트를 적용 할 수 없습니다. 그래서 나는 당신의 도움을 요청합니다.iTunes Search API 콜백에서 반환 값

iTunes 검색 API를 사용하여 상점에서 노래를 찾은 다음 '재생 목록'에 추가하고 있습니다. 프로젝트는 JQuery에서 개발되었습니다.

기본적으로 노래 제목을 쓰는 "iTunesSearch"라는 검색 상자가 있습니다. "검색"이라는 버튼을 클릭하면 iTunes Store에서 노래를 검색하기위한 코드가 실행됩니다. 내가하고 싶은 것은 노래의 이름을 가져 와서 배열에 넣은 다음 페이지의 div에 표시 한 다음 다른 노래를 검색하고 반복해서 반복하는 것입니다. 결국에는 검색 한 모든 노래가 포함 된 배열을 갖고 싶습니다. 여기

코드입니다 :

$(document).ready(function() { 
    $('#search').click(function(){ 
      var media = "music"; 
      var limitOfSearchResults = 1; 
      var thing = document.getElementById('itunesSearch').value; 
      var whatosearch = $('#itunesSearch').attr('value'); 

      $.getJSON("http://itunes.apple.com/search?term=" + thing 
         + "&country=us&limit=" + limitOfSearchResults 
         + "&media=" + media 
         + "&callback=?",function(data) { 

       songname = data["results"][0].trackName; 
       resultPlaylist = createPlaylist(song); 
       alert(resultPlaylist); //is always 1, it doesn't add songs when I repeat search 

       }); 
      function createPlaylist(song){ 
      var playlist = new Array(); 
      playlist.push(song); 
      return playlist.length; //to test if the array stores the results 

     )}; 

});

그리고 여기에 HTML 바디 조각 :

<input id="itunesSearch" type="text" placeholder="Search for a song.."> 
<div id="resultiTunes"></div> 
<input id="search" type= "button" value="Find!"> 

이 어떻게 콜백 외부 songName으로 변수를 전달하고 배열이나 어떤에서 노래의 이름을 저장하는 데 사용할 수 있습니다? 문제는 콜백이 나중에 실행된다는 것입니다. 콜백 내부에서 함수를 호출 해 보았습니다.하지만 배열의 노래를 스택하지 않습니다. 코드의 실패로 인해 코드 조각이 포함되지 않았습니다. 아이디어가 있으십니까?

미리 감사드립니다.

답변

1

해결되었습니다. getJSON 요청을 함수에 넣고 리턴 값을 설정합니다. 그런 다음 .done() 상태를 사용하여 결과를 사용합니다.

function foo(){ return $.getJSON("http://itunes.apple.com/search?media=music&term=2&country=it&limit=60&attribute=genreIndex&entity=song&callback=?",function(data) { 
         //stub 
         } 
       )} 

foo().done(function(result){ 
//do something with result})