简体   繁体   English

执行sqlite查询异步

[英]executing sqlite query asynchronous

is there any way to execute sqlite query in an asynchronous way in javascript ??? 有没有办法在javascript中以异步方式执行sqlite查询???

and if not , how is handling the error of synchronous execution way in the code below!? 如果没有,如何在下面的代码中处理同步执行方式的错误!

var db = openConn('instabartar' , '1.0' , 'Insta Bartar', 200000);
db.transaction(insertUserInformation , errorDB ,successDB );

function insertUserInformation(tx){
    tx.executeSql('CREATE TABLE IF NOT EXISTS USERINFO (ID UNIQUE, USERNAME , FULLNAME , PROFILEPIC , ACCESS_TOKEN)');
}

function openConn(databaseName, dbVersion, dbShowName, dbSize){
    return window.openDatabase(databaseName, dbVersion, dbShowName, dbSize);
}

function errorDB(tx, err) {
    console.log("Error processing SQL: " , err);
    return err;
    //alert("Error processing SQL: " + err);
}

function successDB() {
    console.log("success!" );
    return "success";
}

You could use promises and timeout. 您可以使用Promise和Timeout。 So, something like this might work for you ? 那么,类似的事情可能对您有用? :

var q = require('q'); 

function insertUserInformation(tx){
            var def = q.defer();
            setTimeout(function() {                  
               tx.executeSql('CREATE TABLE IF NOT EXISTS USERINFO (ID UNIQUE,USERNAME , FULLNAME , PROFILEPIC , ACCESS_TOKEN)');
               if (tx.error) {
                  def.reject(tx.error.status);
               }
               else {
                  def.resolve();
               }
            }, 0);
            return def.promise;
    }
insertUserInformation(insertUserInformation).then(successDB, errorDB);

You could learn more about promises here: https://github.com/dscape/nano 您可以在此处了解有关承诺的更多信息: https : //github.com/dscape/nano

I found my own answer ; 我找到了自己的答案; we can execute the code synchronous and handle error same as below 我们可以同步执行代码并处理如下错误

var defferd = $q.defer();
         function insertUserInformation(tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS USERINFO (ID UNIQUE, USERNAME , FULLNAME , PROFILEPIC , ACCESS_TOKEN)');
         }

    function openConn(databaseName, dbVersion, dbShowName, dbSize){
        return window.openDatabase(databaseName, dbVersion, dbShowName, dbSize);
     }

    function errorDB(tx, err) {
        defferd.reject(err);
    }

    function successDB() {
        defferd.resolve(result)
    }

return defferd.promise;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM