2014-05-14 4 views
1

웹 SQL 테이블에 SELECT 문을 실행하고 응답 사용 결과를 기반으로하거나 결과를 얻기 위해 AJAX 호출을해야합니다.웹용 SQL SELECT 동기화

동기화 할 수 있습니까?

이 같은 기능을 가지고 :

getFile : function(fileName) { 

    var me   = this; 

    me.db.transaction(function(tx) { 

     tx.executeSql("SELECT * FROM content WHERE fileName = '" + fileName + "'", [ ], me.onSuccess, me.onError); 
    }); 

    // somehow return results as empty array or array with object 
    // I know results need to be transformed  
}, 

을 나중에 코드에서이 같은 싶지 :

var r = getFile(name); 
if (r.length > 0) { 
    // use it 
} 
else { 
    // make AJAX call and store it 
} 

답변

0

가장 간단한 방법은 당신이 원하는 코드 함수를 작성하는 것을 요청을 실행 한 후 실행하고 getfile 함수의 매개 변수로이 함수를 전달하십시오.

getFile : function(fileName, success) { 

    var me   = this; 

    me.db.transaction(function(tx) { 
      tx.executeSql("SELECT * FROM content WHERE fileName = '" + fileName + "'", [ ], me.onSuccess, me.onError); 
     }, 
     success 
    ); 

    // somehow return results as empty array or array with object 
    // I know results need to be transformed  
}); 

var r = getFile(
     name, 
     function() { 
      var r = getFile(name); 
      if (r.length > 0) { 
       // use it 
      } 
      else { 
       // make AJAX call and store it 
      } 
     } 
); 

그렇지 않으면 가장 좋은 방법은 약속을 사용하여 비동기 문제를 해결하는 것이지만 JQuery와 같은 라이브러리를 사용해야합니다. http://joseoncode.com/2011/09/26/a-walkthrough-jquery-deferred-and-promise/