从函数返回结果 - JavaScript

returning results from functions - javascript

本文关键字:JavaScript 结果 返回 函数      更新时间:2023-09-26

我定义了以下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

你不能真正这样设置变量,因为函数是异步的。 相反,您应该在对 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.....);

如果您的函数 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.....);

公正吗?

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