Javascript 异步执行sqlite查询

Javascript 异步执行sqlite查询,javascript,sqlite,Javascript,Sqlite,有没有办法在javascript中以异步方式执行sqlite查询 如果没有,下面代码中的同步执行错误是如何处理的 var db = openConn('instabartar' , '1.0' , 'Insta Bartar', 200000); db.transaction(insertUserInformation , errorDB ,successDB ); function insertUserInformation(tx){ tx.executeSql('CREATE TA

有没有办法在javascript中以异步方式执行sqlite查询

如果没有,下面代码中的同步执行错误是如何处理的

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

你可以使用承诺和超时。那么,像这样的东西可能对你有用

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

你可以在这里了解更多关于承诺的信息:

我找到了自己的答案;我们可以同步执行代码并处理错误,如下所示

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;

您使用的是哪个库?对于sqlite,我只使用angular js@SkypJack这是node我想是@MohammadJavadSeyyedi?是的,我使用它来制作phonegap应用程序最后一行做什么<代码>插入信息(插入信息)。然后(成功数据库,错误数据库)现在您已经有了一个异步版本的函数,您要说的是运行insertUserInformation,如果成功则说successDB,如果失败则说errorDB。