2012-10-23 4 views
1

이 jQuery/JS 코드를 고치려고 몇 시간 동안 검색했지만 그저 아무것도 반환하지 않으려 고하는 것 같습니다.이 jQuery 함수가 아무 것도 반환하지 않는 이유는 무엇입니까?

var result = getURLS(); // this is always blank 

function getURLS() { 
    var urls = []; 
    var URL_record = Parse.Object.extend("URL_record"); 
    var query = new Parse.Query(URL_record); 

    query.equalTo("user", Parse.User.current()); 
    query.ascending("date"); 

    query.find({ 
     success : function(results) { 
      var tempURLS = []; 
      $.each(results, function(index, record) { 
       urls.push(record.get("shortURL") + " " + record.get("longURL")); 
      }); 
     }, 
     error : function(error) { 

     } 
    }); 
    return urls; 
} 

나는이 특정 기능에서 알림 기능을 작성하는 경우, 비록 :

success : function(results) { 
    var tempURLS = []; 
    $.each(results, function(index, record) { 
     urls.push(record.get("shortURL") + " " + record.get("longURL")); 
    }); 
     alert(urls); 
}, 

잘 알려 것입니다.

아이디어가 있으십니까?

+0

추측 해 보겠습니다. 'query.find'는 (또 다른) 비동기 코드입니까? – raina77ow

+0

'tempURLS'의 기능은 무엇입니까? 그것은 어디에서도 사용되지 않습니다. – jurgemaister

+0

query.find는 비동기 코드이지만 다른 곳에서는 답변을 얻을 수 없습니다. tempURLS는 디버깅을 위해 더 일찍 사용되었지만, 거기에있는 것을 의미하지는 않습니다. –

답변

2

query.find가 비동기 인 경우 success 함수 내부에 변수를 설정 한 다음 결과를 사용하는 코드를 호출해야합니다.

var result; 
getURLS(); 

function getURLS() { 
    var urls = []; 
    var URL_record = Parse.Object.extend("URL_record"); 
    var query = new Parse.Query(URL_record); 

    query.equalTo("user", Parse.User.current()); 
    query.ascending("date"); 

    query.find({ 
     success : function(results) { 
      var tempURLS = []; 
      $.each(results, function(index, record) { 
       urls.push(record.get("shortURL") + " " + record.get("longURL")); 
      }); 
      result = urls; 
      // call code that uses result here 
      processResults(result); 
     }, 
     error : function(error) { 

     } 
    }); 
} 
+0

감사합니다. 아름답게 작동합니다! –

0

나는 query.get이 몇 시간 동안 저조한 후에 비동기임을 알았습니다. 내가 $ (function() {})에서 모든 것을 제거 할 때까지; 블록에서 쿼리가 실행되는 콘솔에서 블록 및 톱. 궁극적 인 아이디어는 모델과 뷰를 비동기식 init 함수가있는 Facebook 앱에로드하는 것입니다. 나는 파스 쿼리가 비동기이기를 기대하지 않았다.

관련 문제