有没有办法在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";
}
答案 0 :(得分:0)
你可以使用promises和timeout。那么,这样的事情对你有用吗? :
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
答案 1 :(得分: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;