2011-10-04 4 views
0

html5 websql db 테이블이 비어 있는지 확인하기 위해 함수를 작성하려고합니다. 코드는 다음과 같습니다. 나는 무슨 일이 일어나고 있는지 알기 위해 그곳에 경고를한다. 이 기능을 실행하면 하단의 경고가 먼저 나타납니다. 테이블이 비어 있더라도 반환 값은 false입니다. 쿼리가 비동기 일어나고HTML5 데이터베이스 테이블 - 비어 있는지 확인

+0

정말 HTML5입니까? – GolezTrol

+1

@GolezTrol 예. http://diveintohtml5.org/storage.html 예 : –

+0

오늘 뭔가를 배웠습니다. :) – GolezTrol

답변

0
귀하의 의견을 바탕으로

w3 page

function tableisempty() { 
tf = false; 
query = "SELECT * FROM OLL;"; 

localDB.transaction(function(transaction){ 
     transaction.executeSql(query, [], function(tx, results){ 

      if (results.rows.length == 0) { 
        tf = true; 
        alert ("table has "+results.rows.length+" rows. returning "+tf); 
       } else { 
        tf = false;  
        alert ("table is not empty. returning "+tf); 
       }        
     }, errorHandler);    
}); 

alert ("return value is " + tf); 

return tf; 

}. 당신의 문제에 대한 해결책은 당신의 js 코드 구조에 달려있다.

옵션 1 :

함수 외부 이동 tf (그리고 앞에 var를 추가)하고 완전히 전에 반환 및 경고 권리를 제거합니다. 콜백이 호출되면 tf의 값이 변경되고 나머지 코드는 정상적으로 참조 될 수 있습니다.

옵션 2 :

this SO 질문에 따라, 당신은 단지 동기 작업을 가능하게 openDatabaseSyncopenDatabase에서 (다른 곳에서 내가 추정 코드에) 전화를 변경할 수 있습니다.

관련 문제