Javascript 如何从嵌套的jquery函数中获取返回?

Javascript 如何从嵌套的jquery函数中获取返回?,javascript,jquery,Javascript,Jquery,我有以下功能: function query(db, querystr){ var resultSet; db.transaction(function(tx){ tx.executeSql(querystr, [], function(tx, results){ console.log("ROWS ---> "+results.rows); resultSet = results.rows;

我有以下功能:

function query(db, querystr){

    var resultSet;

    db.transaction(function(tx){

        tx.executeSql(querystr, [], function(tx, results){


            console.log("ROWS ---> "+results.rows);

            resultSet = results.rows;

        }, dbError);

    }, dbError, dbSuccess);

    return resultSet;

}
如何在main函数中获取results.rows,以便返回调用方

假设调用方执行以下操作:
var result_rows=query(db,'select 1 from dual')

如何确保result_rows从tx.executeSql嵌套函数中获取results.rows值?在本例中,调用方未定义

谢谢,,
TS

试试这样的方法。将回调函数传递给query()函数,并在执行executeSql函数后调用它

function query("ss","querystr" function (data){ 
//data contains  results.rows from query function
});

function query(db, querystr, cb){

    db.transaction(function(tx){

        tx.executeSql(querystr, [], function(tx, results){

            cb(results.rows);
            //console.log("ROWS ---> "+results.rows);

            resultSet = results.rows;

        }, dbError);

    }, dbError, dbSuccess);
}

对于初学者来说,Barmar的评论是正确的:您永远无法真正保证数据返回到相同的Javascript线程/堆栈/无论您如何调用它,因此您不能只返回它

对异步检索的项执行某些操作的最常见模式是,请求函数应传入一个onSuccess函数(要调用),并将结果数据作为参数。这种模式的性能要好得多,因为UI线程没有阻塞

var pizza = getMeAPizza('pepperoni');
console.log('Yesss, got my pizza.');

//becomes...

getMeAPizza('pepperoni', function(pizza) {
  console.log('Yesss, got my pizza.');
}

我认为,如果您像您所说的那样开发JQuery插件,据我所知,一种常见的模式是在返回“”对象定义时实现它,因此调用函数可以链接以下操作。这一部分对我来说是二手知识,所以我不必费心拼命解释它……

像AJAX一样,Javascript数据库是异步的,函数在事务发生之前返回。您必须在回调函数中执行所有操作,而不是使用返回值。我可以在嵌套函数中更改全局变量吗?@T.S.但是每个人都会告诉您不要这样做。太好了。。。它是一个回调函数。这更符合我想要的。谢谢你,桑尼!