Reynier
Reynier

Reputation: 2478

Call function after some period time

I'm having a problem and don't know how to solve it. I have two functions in Javascript, both are called via AJAX, first function get values and insert records in DB and second function reads from DB and show the results. Since first function get values remotely sometimes response times are larger than second function and for that reason second function executes before first. What I need is to call buildTablesFromDB() only if AJAX call for buildClassification() is done. This is how my code looks like:

$(document).ready(function() {
    function buildTablesFromDB() {
        var request = $.ajax({
            type: 'GET',
            dataType: 'json',
            url: "http://local/parser/reader.php",
            success: function(data) {
                $("#clasification-data").html();

                if (data.response === false) {
                    $(".alert").show();
                    $(".close").after(data.error);
                } else {
                    if (data.html_content.position.length != 0) {
                        $("#clasification-holder").show();
                        var iterator = data.html_content.position;
                        var tr = "";
                        $.each(iterator, function(key, value) {
                            tr += "<tr>";
                            tr += '<td><img src="' + value.team_image + '" alt="' + value.team_name + '" title="' + value.team_name + '">&nbsp;&nbsp;' + value.team_name + '</td>';
                            tr += '<td>' + value.team_jj + '</td>';
                            tr += '<td>' + value.team_jg + '</td>';
                            tr += '<td>' + value.team_jp + '</td>';
                            tr += '<td>' + value.team_difference + '</td>';
                            tr += '<td><span class="glyphicon glyphicon-play"></span><span class="glyphicon glyphicon-stop"></span></td>';
                            tr += '</tr>';
                        });

                        $("#clasification-data").html(tr);
                    }
                }
            },
            error: function() {
                request.abort();
            }
        });
    }

    function buildClassification() {
        var request = $.ajax({
            type: 'GET',
            dataType: 'json',
            url: "http://local/parser/parser.php",
            success: function(data) {
                if (data.response === false) {
                    // some error
                }
            },
            error: function() {
                request.abort();
            }
        });
    }

    window.setInterval(function() {
        buildClassification();
    }, 1800000); // Updates table results each 30 minutes

    window.setInterval(function() {
        buildTablesFromDB();
    }, 1800000); // Updates table results each 30 minutes

    buildClassification();
    buildTablesFromDB();
});

How I can get this done?

Upvotes: 0

Views: 355

Answers (1)

Romko
Romko

Reputation: 1798

you can call buildTablesFromDB() in the callback method of buildClassification() e.g.

....
dataType: 'json',
        url: "http://local/parser/parser.php",
        success: function(data) {
            if (data.response === false) {
                //

            }else{
                buildTablesFromDB();
            }
        },

Upvotes: 1

Related Questions