我只是在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,我可能会得到这个表。
答案 0 :(得分:0)
正如我所说 - 显而易见的错误。功能应如下所示:
function Name(user, page) {
return $.get("http://page2/" + user, function(data) {
sum += 7;
});
}