日期:2014-05-16  浏览次数:20407 次

js调用doQuery操作sqliteDB如何设置成同步
最近在开发离线程序的时候,用到了sqliteDB.js
里面的方法可以方便的操作sqlite数据库如下:
doQuery: function (sql, callback)
但是问题来了,这个是异步的方式取数据,因此他的后面不能放其他JS语句,否则可能会先执行后面。
但是for循环里面如果调用这个方法,该怎么办呢。。。
因此想问问各位高手是否有把它设置成同步的方法呢?
js sqlite

------解决方案--------------------
這樣行不行


if(null != data && 0 != data[0]){
   lists(data);     
}
function lists(data, index) {
    var i = index 
------解决方案--------------------
 0;
    var l = data.length;
    var staffNo, sql;
    if(i < l) {
        staffNo = data[i]
        sql = "select COUNT(a.objectAnswer) answerCount from MassPaperResultRecord a ";
        sql += "  where 1 = 1 and a.status = 1 and a.massCode = 33 ";
        sql += " and a.objectClass = 'S' and a.objectDept = '101' and a.objectStaffNo =  " + staffNo;
        db.doQuery(sql,function(r){
           lists(data, i + 1); 
        });
    }    




------解决方案--------------------
你的回调要做成一个函数啊,没见你继续执行下一步的操作
    var sql = '第一句sql语句';
    var max = 10, now = 0;
    db.doQuery(sql, callback);

    function callback(r) {
        now++;
        //根据拼装下一个sql语句

        if (now < max) db.doQuery(sql, callback);///////未达最大下标继续查询
    }