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