0

I defined the following Javascript function:

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)                 

              }

Now, how can i return my_result value so i can do this?

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

Thanks in advance. Ask if you need more explanation. :)

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

McGarnagle
  • 101,349
  • 31
  • 229
  • 260
Stefano
  • 99
  • 6

3 Answers3

1

You can't really set the variable like that, because the function is asynchronous. Instead, you should include a callback function in your request to RecoverDataFromTable. Define it like this:

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

Then make the call like this:

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

RecoverDataFromTable(handleResult, table_name, argument1, argument2.....);
McGarnagle
  • 101,349
  • 31
  • 229
  • 260
0

If your function RecoverResults is asynchronous, then you can use to::

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.....);
belykh
  • 1,109
  • 10
  • 25
  • this is very similar to the correct answer. It doesn't work because there's callback in RecoverResults arguments. Thanks anyway :) – Stefano Apr 24 '12 at 08:35
0

isn't it just?

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

var my_result = RecoverResults();
Burntime
  • 2,334
  • 2
  • 15
  • 20