调用动态数量的函数后执行代码

时间:2014-12-14 04:07:35

标签: javascript ajax asynchronous google-chrome-extension

我只是在JS中爬行,所以可能解决方案很明显。

我正在编写Chrome扩展程序,在浏览器操作中(点击扩展程序的按钮后)会读取多个页面,并从每个页面中检索一个整数。然后,它创建一个包含这些整数的表。我正在使用AJAX,因此它是异步的,我希望在创建表之前拥有所有整数。

我已经阅读了这些主题:

...并编写了一个无效的代码。

var sum = 0;

document.addEventListener('DOMContentLoaded', function () {
    var deferreds = [];
    var users = [...], pages = [...];
    for(i = 0; i < users.length; ++i) {
        for(j = 0; j < pages.length; ++j)
            deferreds.push(window[pages[j]](users[i], pages[j]));
    }
    $.when.apply(null, deferreds).done(function() {
        alert("sum: " + sum);
    });
});

function Name(user, page) {
    $.get("http://page2/" + user, function(data) {
        sum += 7;
    });
    return 7;
}

function Name2(user, page) {
    $.get("http://page/" + user, function(data) {
        sum += 84;
    });
    return 84;
}

因此警报打印0而不是91.我用表格切割零件,因为所有字段都是“未定义”。如果我得到sum = 91,我可能会得到这个表。

1 个答案:

答案 0 :(得分:0)

正如我所说 - 显而易见的错误。功能应如下所示:

function Name(user, page) {
    return $.get("http://page2/" + user, function(data) {
        sum += 7;
    });
}