2013-06-27 5 views
0

에 폰갭 데이터베이스 SQLite는 쿼리가 내부 함수에서 값을 반환하는 방법이 내 코드외부 기능

hasSubAcc = function(accPid) { 
    $.mobile.eazydb.transaction(function(tx) { 
     tx.executeSql('SELECT * FROM Account WHERE Account_Parent_ID="'+accPid+'"', [], 
      function(tx, rs){ 
       if(rs.rows.length == 0) { 
        return false; 
       } else { 
        return true; 
       } 
     }); 
    }); 
} 

및 정의되지 않은

alert(hasSubAcc(accid)); 

이 경고 인쇄에 액세스하는 방법입니다. 이 코드에 무슨 문제가있다. 모든 솔루션 plz. 고마워.

+0

사용하여 약간의 지연을 줄 확인한 후 이제 전역 변수 var hasSubAcc=-1;을 만들 수 있습니까? 오류 로그를 점검하십시오. –

+0

오류가 없습니다. 단순히 정의되지 않은 내용을 인쇄하고 진행합니다. –

+0

hasSubAcc 코드를 함수에 넣고 executeSQL() 콜백에서 호출 할 수 있습니다 –

답변

0

함수 내에서 무거운 프로세스 (예 : 데이터베이스)를 사용할 때 문제가 발생하므로 jquery는 주 스레드와 나란히 별도의 스레드에서이 함수를 실행하므로 값이 항상 정의되지 않게됩니다.

당신은 어떤 오류가 조건

if(rs.rows.length == 0) { 
        hasSubAcc=0; 
       } else { 
        hasSubAcc=1; 
       } 

지금

setTimeout(function(){ 
alert(hasSubAcc); 

},500); 

or 

while(hasSubAcc==-1){ 
//do nothing 
} 
alert(hasSubAcc);