0

次の 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.....)

前もって感謝します。さらに説明が必要かどうか尋ねます。:)

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

4

3 に答える 3

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.....);
于 2012-04-24T08:06:46.090 に答える
0

関数 RecoverResults が非同期の場合は、次のように使用できます::

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.....);
于 2012-04-24T07:52:53.997 に答える
0

だけじゃない?

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

var my_result = RecoverResults();
于 2012-04-24T07:56:53.087 に答える