2015-10-28 214 views
0

有没有办法以异步的方式在javascript中执行sqlite查询?执行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"; 
} 
+0

您正在使用哪个库? – skypjack

+0

为sqlite,没有什么,但我使用角js @skypjack –

+0

这是节点我想@MohammadJavadSeyyedi? – 82Tuskers

回答

0

我发现我自己的答案;我们可以执行代码同步并处理与以下相同的错误

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

您可以使用承诺和超时。那么,像这样的东西可能适合你? :

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

你可以了解更多关于此承诺:https://github.com/dscape/nano

+0

最后一行是什么? (insertUserInformation).then(successDB,errorDB);' –

+0

现在你有一个你的函数的异步版本,你说运行insertUserInformation,然后如果成功则为successDB,如果失败则为errorDB。 – 82Tuskers