AngularJS javascript函数卡在else语句中

时间:2015-06-09 02:45:59

标签: javascript jquery angularjs

我有这个代码,我想检查本地数据库中的代码输入数据是否相同。此代码正常工作,直到它标记为代码挂起或停在此处。一旦代码达到条件,它就会完美地运行,并将通知程序指定为true,但它不会从该函数中出来并被卡在那里,因此代码的剩余部分不会被执行。任何人都可以向我解释原因吗?我正在构建一个Ionic,AngularJS应用程序。

function checklocalDB(localdb, result) {
    var d= $q.defer();
    var identifier = false;
    var notifier = false;
        // var f = function(localdb, result){
    if(localdb === false) {
        console.log("inside localdb false")
        var insert_into_table = "INSERT INTO preferences(description, value) VALUES ('username','" + result[0].username + "'), ('token','" + result[0].token.toString() + "')";

        $cordovaSQLite.execute(db, insert_into_table).then(function (res) {
            console.log("executedd")
            var updateDB = "UPDATE preferences SET value='true' WHERE description='registered'";
            $cordovaSQLite.execute(db, updateDB).then(function (res) {
                console.log("executed")
                identifier = true;
                notifier = true;
                //d.resolve(identifier)
                var query = "SELECT id, description, value FROM preferences";
                $cordovaSQLite.execute(db, query).then(function (res) {
                }, function (err) {
                    console.error(err);
                });
            }, function (err) {
                console.error(err);
            });
        });
    }
    else {
        console.log("inside localdb true")
        var dbNew = null;
        var query = "SELECT id, description, value FROM preferences";
        console.log(localdb)
        $cordovaSQLite.execute(db, query).then(function (res) {
            console.log("hhhhhhhhhhhhhh")
            console.log(res.rows.item(2).value)
            console.log(result[0].username)
            if(res.rows.item(2).value != result[0].username) {
                console.log("username different")
                $cordovaSQLite.deleteDB("loanstreet_partners.db");
                dbNew = $cordovaSQLite.openDB("loanstreet_partners.db");
                $cordovaSQLite.execute(dbNew, "CREATE TABLE IF NOT EXISTS preferences (id integer primary key, description string, value string)").then(function (res) {
                    console.log("done")
                    var insert_into_table = "INSERT INTO preferences (description, value) SELECT 'registered' as registered, 'false' as value UNION SELECT 'logged_in', 'false'";
                    $cordovaSQLite.execute(db, insert_into_table).then(function (res) {
                        console.log("1st")
                        var insert_into_table = "INSERT INTO preferences(description, value) VALUES ('username','" + result[0].username + "'), ('token','" + result[0].token.toString() + "')";
                        $cordovaSQLite.execute(db, insert_into_table).then(function (res) {
                            console.log("2nd")
                            identifier = true;
                            notifier = true;

                            var updateDB = "UPDATE preferences SET value='true' WHERE description='registered'";
                            $cordovaSQLite.execute(db, updateDB).then(function (res) {
                            }, function (err) {
                                console.error(err);
                            });
                        });
                    }, function (err) {
                        console.error(err);
                    });
                }, function (err) {
                    console.error(err);
                });
            }
            else {
                notifier = true;
                console.log("im here")
                return notifier;
                // ***code hangs or stops here***
            }
        }, function (err) {
            console.error(err);
        });
    }  

    // ***this is never executed because it still remains false*** 
    if(notifier === true) {
        console.log(identifier)
        console.log(notifier)
        d.resolve(identifier) 
    }

    return d.promise;
        // watch identifier when value change then only resolve
        //d.resolve(identifier)
        //return d.promise; 
}

任何帮助表示赞赏

0 个答案:

没有答案