我在执行Javascript方法时遇到问题。我有这段代码:
for (let c = -100; c < 501; c += 100) {
fetch(`data/votes_${c + 101}-${c + 200}.json`)
.then((resp) => resp.json())
.then((data_vot) => {
proy_etiq.forEach((eti_selec) => {
let cont_si_tot = 0;
data_vot.congresista.forEach((congresista) => {
congresista.proyecto.forEach((proyecto) => {
let cont_si = 0;
eti_selec.proyectos.forEach((proy_selec) => {
if (proyecto.id === proy_selec.id) {
cont_si += proyecto.voto.si;
proy_selec.votos[0] += cont_si;
}
});
cont_si_tot += cont_si;
});
});
flor_si.push({ Tema: eti_selec.nombre, abs: cont_si_tot });
});
});
}
我只需要在迭代完成后才添加变量,但是当我运行项目时,变量首先要添加(初始值为0),然后再进行迭代。 我怎样才能让它仅在过程完成后附加?
编辑: 由于之前我不太清楚,所以我分享了我问问题的一段代码
proy_etiq
CI_PROJECT_NAME
是我已经拥有的列表,
答案 0 :(得分:0)
如果您不希望追加作为迭代的一部分发生,请将其移出迭代。
let array = [];
let variable = 0;
list.forEach((item_1) => {
...
});
array.push(variable);
答案 1 :(得分:0)
不确定代码的确切用途是什么,我确定您可以肯定地对其进行优化。就是说,给定您的原始代码,我认为您可以通过将数组推入过程分配到另一个then块中来使其工作,这将确保在多个循环完成后才执行它。在下面放入更改后的代码段。
let array = [];
list.forEach((item_1) => {
let variable = 0;
fetch("data.json")
.then((resp) => resp.json())
.then((data) => {
data.forEach((item_2) => {
item_2.forEach((item_3) => {
item_3forEach((item_4) => {
if (condition) {
variable += 1;
}
});
});
return 1;
})
//Changed code here.
.then(_=>array.push({a: variable, b: item_1}))
});
});