Search code examples
javascriptjquerysequencedocument-readyfunction-calls

why my function call later, after display this alert and display first document ready alert.....?


in This Code First Display abc Alert And then My Function Call And Display In function Alert WHy..?but In this Code i call my function first so why abc alert display first..?

    function GetDefaultChanter(){
        db.transaction(function (tx){
            tx.executeSql('SELECT Value FROM Setting where Key = "DefaultChanter";',[],querySuccessDefaultChanter);},                         
            errorCB);
    }

    function querySuccessDefaultChanter(tx,result){
        $.each(result.rows,function(index){
            var row = result.rows.item(index);
            var chantervalue = row["Value"];
            alert(chantervalue);
            $('#defaultchanterid').val("chantervalue");
        });
    }

$(document).ready(function (e) {

                        GetDefaultChanter();
                        var abc = $('#defaultchanterid').val();
                        alert(abc);

});

Solution

  • DB transactions in javascript are not blocking. They are executed asynchronously. Since db.transaction is not complete before alert(abc) is executed, alert prompt is shown. You need to show alert in success callback as follows

    function GetDefaultChanter(){
        db.transaction(function (tx){
            tx.executeSql('SELECT Value FROM Setting where Key = "DefaultChanter";',[],querySuccessDefaultChanter);},                         
            errorCB);
    }
    
    function querySuccessDefaultChanter(tx,result){
        $.each(result.rows,function(index){
            var row = result.rows.item(index);
            var chantervalue = row["Value"];
            alert(chantervalue);
            $('#defaultchanterid').val("chantervalue");
    
            //alert handled in callback
                var abc = $('#defaultchanterid').val();
                    alert(abc);
            }
        });
    
    $(document).ready(function (e) {
    
                            GetDefaultChanter();
    
    });
    

    https://developer.apple.com/library/content/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TP40007256-CH3-SW4