2014-05-23 3 views
2

부모 함수에 배열을 반환하여 HTML 내 div에 추가 할 수 있습니다.배열을 부모 함수 호출로 반환

내가 가진 기능이 잘못된 시퀀스를 실행하고있는 것으로 보입니다. 여기 제 기능입니다 :

내가의 경고 수 있습니다 어떻게됩니까
function getRounds() { 
    var db = connectDB(); 
    var items = new Array(); 
    db.transaction(function(tx) { 
     tx.executeSql('SELECT * FROM round', [], function(tx, results) { 
      var len = results.rows.length; 
      for (var i=0; i<len; i++){ 
       items.push(results.rows.item(i)); 
      } 
      alert('ONE: '+ JSON.stringify(items)); 
      return items; 
     }, errorCB); 
     alert('TWO: '+ items) 
    }); 
    alert('THREE: '+ items); 
    return items; 
} 

"세 :"다음 "2 :"다음 "ONE : [대상]".

논리적으로는 함수가 중첩되어 있기 때문에 다른 방향으로 경고해야합니다. 하나는 주 함수 (getRounds)로 반환해야하는 객체 배열을 반환합니다.

어떻게하면이 아이디어를 얻을 수 있습니까?

내가 Appgyver에 의해 스테로이드를 사용하고

는 웹 SQL 데이터베이스 저장에 대한 설명서는 여기에서 찾을 수 있습니다 : http://docs.appgyver.com/en/stable/cordova_storage_storage.md.html#SQLResultSetRowList

답변

10

호출이 비동기이기 때문입니다! 콜백을 사용해야합니다!

function getRounds(callback) { 
    var db = connectDB(); 
    var items = new Array(); 
    db.transaction(function(tx) { 
     tx.executeSql('SELECT * FROM round', [], function(tx, results) { 
      var len = results.rows.length; 
      for (var i=0; i<len; i++){ 
       items.push(results.rows.item(i)); 
      } 
      alert('ONE: '+ JSON.stringify(items)); 
      callback(items) 
     }, errorCB); 
    }); 
} 

getRounds(function(items) { 
    console.log(items); 
}); 
+0

나는 다소 어리 석다. 고마워요! – Karl

+0

@Karl - 언제나 도와 드리겠습니다. 콜백에 대해 머리를 감쌀 수있게되면 모든 것이 훨씬 이해하기 쉬워집니다. – tymeJV

+0

저는 자바 스크립트 위즈가 아니므로 분명히 학습 곡선이되어 이걸로 많이 도움이 될 것입니다. 계획. 도움을 주셔서 감사합니다. – Karl

관련 문제