2012-04-24 4 views
0

나는 다음과 같은 자바 스크립트 함수를 정의 :이 작업을 수행 할 수 있도록결과를 리턴 - 자바 스크립트

이제
function RecoverDataFromTable(table_name) { 
       query = ""; 

       //some code that build a query string from table_name and 
       //other arguments given to the function 

       function Query(database) { 
       database.executeSql(query, [], RecoverResults, Error) 
       } 

       function RecoverResults(database, results) { 
       var my_result = results.rows(0).id; 
       // assume this works and store a value to my_result 
       } 

       function Error(error) { 
       //alert something 
       } 

       function Success() { 
       //alert something 
       } 

       database.transaction(Query, Error, Success)     

       } 

, 어떻게 내가 my_result 값을 반환 할 수 있습니다?

미리 감사드립니다. 자세한 설명이 필요한지 물어보십시오. 함수의 RecoverResults 비동기 인 경우 :

http://www.raymondcamden.com/index.cfm/2012/1/6/Working-with-dates-and-SQLite-in-PhoneGap

+0

** 오류 **와 ** 성공 **되는 콜백 그들은 비동기 :

function RecoverDataFromTable(callback, table_name) { ... function RecoverResults(database, results) { var my_result = results.rows(0).id; // assume this works and store a value to my_result // make the callback: callback(result); } ... } 

는 그 다음이 같은 전화를 걸 : 이런 식으로 정의? – McGarnagle

+0

나는 초보자이므로 잘 모르겠다. ....하지만 나는 그렇게 생각한다. – Stefano

+0

Ok ... ** 데이터베이스 **에 대한 정보를 더 제공 할 수 있습니까? JS 라이브러리 인 것 같습니다. – McGarnagle

답변

1

함수가 비동기이기 때문에 실제로 변수를 설정할 수 없습니다. 대신 콜백에 요청하여 RecoverDataFromTable에 포함해야합니다. ...

function handleResult(my_result) 
{ 
    // handle the result here 
} 

RecoverDataFromTable(handleResult, table_name, argument1, argument2.....); 
+0

그 작품! 감사! – Stefano

0

는, 당신은

function RecoverDataFromTable(callback, table_name) { 
     ... 
     function RecoverResults(callback, database, results) { 
      var my_result = results.rows(0).id; 
      callback(my_result); 
      // assume this works and store a value to my_result 
     } 
} 
RecoverDataFromTable(function(result) { 
    var my_var = result; 

}, table_name, argument1, argument2.....); 
+0

이것은 매우 비슷합니다. 정답. RecoverResults 인수에 콜백이 있기 때문에 작동하지 않습니다. 어쨌든 고마워요 :) – Stefano

0

은 그냥되지 않습니다 :: 할 수 있습니까?

function RecoverResults(database, results) { 
return results.rows(0).id; 
} 

var my_result = RecoverResults(); 
+0

아니, 왜냐하면 그 기능이 비동기 적이기 때문에 ... – McGarnagle

관련 문제