许多ajax请求会错误地影响我的变量吗?

时间:2013-11-09 17:35:34

标签: javascript jquery ajax variables loops

我目前正在使用JavaScript / jQuery中的脚本来计算统计数据。 所以它要求做很多HTTP请求,解析DOM并修改变量值。我遇到了一些错误,我担心AJAX请求是异步的,这是原因。

例如,假设我想在StackOverflow上浏览很多问题,并评估成员出现的次数。

我会编写类似这样的代码:

var users = {};
var checked_pages = 0;

function get_users(num_question) {
    $.ajax({
        url: "http://www.stackoverflow.com/questions/" + parseInt(num_question), // I Know that sometimes, the question is removed or the url redirects to an answer, but it does not matter, it is not the issue.
        type: "GET",
        success: function(data) {
            var users_in_page = $(".user-details > a").map(function() { return $(this).text(); }).get(); // Users who appear in the page.
            for (var i = 0; i < users_in_page.length; i++) {
                if (isNaN(users[users_in_page[i]])) { // The user is not yet in the dictionnary.
                    users[users_in_page[i]] = 1;
                } else {
                    users[users_in_page[i]] += 1;
                }
            }

            checked_pages += 1;

            if (checked_pages == 99) { // Every requests are made.
                alert("END");
                // Do something with my dictionary.
            }
        }
    });
}

for (var i = 1; i < 100; i++) {
    get_users(i);
}

我担心的是,由于所有请求都是非常快速地同时发生,因此计算错误可能会导致错误的最终字典变量。

这就是为什么在此之前我在我的函数中使用了一个回调,它取代了我的最终循环并允许确保所有内容都正确执行。但当然,它要慢得多。

function get_users(num_question) {
    ...

    num_question += 1;
    get_users(num_question);
}

get_users(1);

我的第一个提案,同时有AJAX请求,会导致问题,所以我担心吗? 因为我已经创建了这样的脚本,结果很奇怪,我想知道它是否来自那里...... 如果确实如此,那么有没有办法确保我的变量和字典的完整性,同时比第二个函数更快地增加请求?

0 个答案:

没有答案