function search(){
var searchData = null;
var query = "select * from table limit 1;";
localDB.transaction(function(transaction) {
transaction.executeSql(query, [],
function(transaction, results) {
//我想在这里将results的值传给变量searchData,便于其他地方使用
searchData = results; //但是这样没用
debug(searchData.rows.item(0)['info'], 1); //这里有结果输出
}, function(
transaction, error) {
debug("Error: " + error.code + "<br>Message: " + error.message, 1);
});
});
debug(searchData.rows.item(0)['info'], 1); //这里保错 Cannot read property 'rows' of null
return searchData; //其它地方处理需要searchData
}
请问怎么才能将records的值赋给searchData?
谢谢
2.保证所有用到searchData的地址都是在回调执行完之后才去取值的
既然是回调函数,那一般是异步执行的,不会阻塞主线程,所以代码会继续执行,先执行了debug(searchData.rows.item(0)['info'], 1); 这句,这时searchData没有赋值,然后某个时间回调条件满足了,执行回调函数,searchData被赋值function search(){
var searchData = null;
var query = "select * from table limit 1;";
localDB.transaction(function(transaction) {
transaction.executeSql(query, [],
function(transaction, results) {
//我想在这里将results的值传给变量searchData,便于其他地方使用
searchData = results; //但是这样没用
debug(searchData.rows.item(0)['info'], 1); //这里有结果输出,都有输出还叫没用?
},
function(
transaction, error) {
debug("Error: " + error.code + "<br>Message: " + error.message, 1);
});
});
debug(searchData.rows.item(0)['info'], 1); //这里保错 Cannot read property 'rows', of null 这儿报错是因为上面那个函数还没有执行,serchData没有被赋值。
return searchData; //其它地方处理需要searchData
}修改如下:function search(){
var searchData = null;
var query = "select * from table limit 1;";
localDB.transaction(function(transaction) {
transaction.executeSql(query, [],
function(transaction, results) {
//我想在这里将results的值传给变量searchData,便于其他地方使用
searchData = results; //但是这样没用
debug(searchData.rows.item(0)['info'], 1); //这里有结果输出
return searchData; //在回调函数中searchData已经赋值 }, function(
transaction, error) {
debug("Error: " + error.code + "<br>Message: " + error.message, 1);
return false;
});
});
}
没有办法把这个回调函数中获取的值返回到主函数(因为回调函数执行时主函数已经结束)
处理代码应该写在回调函数内,非要保存的话,用全局变量保存吧