Javascript 设置一个变量以从回调函数获取返回

Javascript 设置一个变量以从回调函数获取返回,javascript,Javascript,我很确定这就是你想要做的。您从事务函数在回调中传递值 var results = null; function fetchdata(option, callback) { var db = window.openDatabase('mydb', '1.0', 'Test DB', 1024*1024), selectQuery = "SELECT log FROM LOGS WHERE id = ?"; db.transaction(function(tx){

我很确定这就是你想要做的。您从事务函数在回调中传递值

var results = null;

function fetchdata(option, callback) {
    var db = window.openDatabase('mydb', '1.0', 'Test DB', 1024*1024),
    selectQuery = "SELECT log FROM LOGS WHERE id = ?";
    db.transaction(function(tx){
            tx.executeSql(selectQuery,[option],function(tx,results){
                if( results.rows.length ) {
                     retval = unescape(results.rows.item(0)['log']);
                }
            var returnValue = callback(retval);
            return returnValue;
            });
    });
}
result = fetchdata(2,function(val){ return val; });
console.log("response***",results);
然后你可以在它返回时处理它

function fetchdata(option, callback) {
  var db = window.openDatabase('mydb', '1.0', 'Test DB', 1024*1024),
  selectQuery = "SELECT log FROM LOGS WHERE id = ?";
  db.transaction(function(tx){
    tx.executeSql(selectQuery,[option],function(tx,results){
      var retval; // I added this line so you don't get an error
      if( results.rows.length ) {
        retval = unescape(results.rows.item(0)['log']);
      }
      callback(retval);
    });
  });
}

您的问题是什么?您不能从异步方法返回。这是的副本。不能从异步回调函数返回数据。您必须使用回调中的数据,或者从回调中调用另一个函数并将数据传递给它。这是异步编程,在使用异步操作时是必需的。这是一个非常常见的错误,或者是在过去的24小时里对同一问题的第四篇文章缺乏理解。有人承诺吗?首先,异步方法可以返回数据,只是当值未解析时,您通常会尝试处理该数据。第二,这就是为什么承诺是在哪里发明的。
fetchdata(2, function (val) {
  console.log("response***", val);
});