一段时间后调用功能

时间:2013-10-27 20:12:25

标签: javascript jquery

我遇到了问题,不知道如何解决。我在Javascript中有两个函数,两个函数都通过AJAX调用,第一个函数获取值并在DB中插入记录,第二个函数从DB中读取并显示结果。由于第一个函数远程获取值,有时响应时间大于第二个函数,因此第二个函数在第一个函数之前执行。我需要的是只有在完成对buildTablesFromDB()的AJAX调用时才调用buildClassification()。这就是我的代码的样子:

$(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();
});

我如何完成这项工作?

1 个答案:

答案 0 :(得分:1)

您可以在buildTablesFromDB()的回调方法中致电buildClassification() e.g。

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

            }else{
                buildTablesFromDB();
            }
        },