Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同步选择到web sql_Javascript_Web Sql - Fatal编程技术网

Javascript 同步选择到web sql

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 + "

我需要对我的web sql表执行SELECT语句,并基于响应使用结果或进行AJAX调用以获得结果

是否可以进行同步

我有这样的功能:

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之类的库。