Synchronized SELECT to web sql

Synchronized SELECT to web sql

本文关键字:sql web to SELECT Synchronized      更新时间:2023-09-26

我需要执行SELECT语句到我的web sql表,并根据响应使用结果或使AJAX调用获得结果。

有可能make synchronized ?

我有这样的函数:

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

否则,最好的执行方法是使用Promises来解决异步问题,但你必须使用JQuery这样的库。http://joseoncode.com/2011/09/26/a-walkthrough-jquery-deferred-and-promise/