Javascript 同步选择到web sql
我需要对我的web sql表执行SELECT语句,并基于响应使用结果或进行AJAX调用以获得结果 是否可以进行同步 我有这样的功能:Javascript 同步选择到web sql,javascript,web-sql,Javascript,Web Sql,我需要对我的web sql表执行SELECT语句,并基于响应使用结果或进行AJAX调用以获得结果 是否可以进行同步 我有这样的功能: getFile : function( fileName ) { var me = this; me.db.transaction( function( tx ) { tx.executeSql( "SELECT * FROM content WHERE fileName = '" + fileName + "
getFile : function( fileName ) {
var me = this;
me.db.transaction( function( tx ) {
tx.executeSql( "SELECT * FROM content WHERE fileName = '" + fileName + "'", [ ], me.onSuccess, me.onError );
} );
// somehow return results as empty array or array with object
// I know results need to be transformed
},
var r = getFile( name );
if ( r.length > 0 ) {
// use it
}
else {
// make AJAX call and store it
}
在后面的代码中,我们希望执行以下操作:
getFile : function( fileName ) {
var me = this;
me.db.transaction( function( tx ) {
tx.executeSql( "SELECT * FROM content WHERE fileName = '" + fileName + "'", [ ], me.onSuccess, me.onError );
} );
// somehow return results as empty array or array with object
// I know results need to be transformed
},
var r = getFile( name );
if ( r.length > 0 ) {
// use it
}
else {
// make AJAX call and store it
}
最简单的方法是使用执行请求后要执行的代码创建一个函数,并将此函数传递到getfile函数的参数中:
getFile : function( fileName, success ) {
var me = this;
me.db.transaction( function( tx ) {
tx.executeSql( "SELECT * FROM content WHERE fileName = '" + fileName + "'", [ ], me.onSuccess, me.onError );
},
success
);
// somehow return results as empty array or array with object
// I know results need to be transformed
});
var r = getFile(
name,
function() {
var r = getFile( name );
if ( r.length > 0 ) {
// use it
}
else {
// make AJAX call and store it
}
}
);
否则,最好的执行方法是使用承诺来解决异步问题,但必须使用JQuery之类的库。