2012-04-24 14 views
0

私は、次のJavaScript関数を定義した:私はこれを行うことができますので返す結果 - javascriptの

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値を返すことができますか?

var my_var = RecoverDataFromTable(table_name, argument1, argument2.....) 

ありがとうございます。 詳しい説明が必要かどうか質問してください。あなたの関数のRecoverResultsが非同期である場合:)

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

+0

**エラー**と**成功は**コールバックしている...彼らは非同期でありますか? – McGarnagle

+0

私は初心者ですので、私は確信していません....しかし、私はそうだと思います.. – Stefano

+0

Ok ...あなたは**データベース**について何か情報を提供できますか?それはJSライブラリのようです。 – McGarnagle

答えて

1

このような変数は、関数が非同期であるため、実際には設定できません。代わりにコールバックの機能をへのリクエストに含める必要があります。RecoverDataFromTableこのようにそれを定義します。

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); 
    } 
    ... 
} 

次に、このような呼び出します

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