How to wait till callback function returns?

后端 未结 3 406
悲哀的现实
悲哀的现实 2021-01-19 23:10

I\'m making an android application using phonegap. I\'m using phonegap\'s Storage api for querying a database. here\'s my code:

function directPath(src, dest         


        
相关标签:
3条回答
  • 2021-01-19 23:51

    I wrote a function to solve a similar problem, you can call it like this:

    database("SELECT * FROM USER", function(result){
        console.log(result);
    });
    
    //FUNCTION
    function database(sql, callback) {
    
        if(!callback) { callback = function(r) { console.log(r); } }
    
        var database_name = "Database",
            database_version = "1.0",
            database_displayname = "DatabaseName",
            database_size = 1000000,
            result = {
                error: -1,
                message: "",
                len: 0,
                rows: {}
            },
            db = window.openDatabase(database_name, database_version, database_displayname, database_size);
            db.transaction(
                            function (tx) {
                                tx.executeSql(sql, [], querySuccess, errorCB);
                            }, function (tx, results) {
                                //SUCCESS
                            }, function (err) {
                                //ERROR
                            }
            );
            function querySuccess(tx, results) {
                if (results) {
                    result.len = results.rows.length;
                    result.message = "Success";
                    for (var i=0; i<result.len; i++){
                        result.rows[i] = results.rows.item(i);
                    }
                } else {
                    result.len = 0;   
                }
                callback( result );
            }
            function errorCB(err) {
                result.error = err.code;
                result.message = err.message;
                callback( result );
            }
    }
    
    0 讨论(0)
  • 2021-01-19 23:58

    Don't try to fight the asynchrony: Your app might end up seeming unresponsive to the user. Use the querySuccess callback for any code that has to be executed afterwards.

    0 讨论(0)
  • 2021-01-20 00:09

    You don't have to wait... Just write your code in querySuccess to execute it afterwards....

    0 讨论(0)
提交回复
热议问题