我有如下代码
for (var key in array) {
var name = array[key];
console.log(name);
line[val].setResultTableFormatter((builder, series, xValue, yValue) => {
return builder.addRow(name);
});
}
这里的数组长度为5,console.log(name)
被打印5次,但setResultTableFormatter
只使用最后一个数组值执行一次。如何运行5次?
我试着像其他StackOverflow答案中解释的那样添加await,但是,它只执行一次。
在不知道setResultTableFormatter
做什么的情况下,看起来函数将运行所有这5次,但函数setResultTableFormatter
只是覆盖前4次。
你可以试着在setResultTableFormatter
里面添加一个console.log
,像这样:
for (var key in array) {
var name = array[key];
console.log(name);
line[val].setResultTableFormatter((builder, series, xValue, yValue) => {
console.log('add row', name);
return builder.addRow(name);
});
}
或者你可以在setResultTableFormatter
函数内运行for循环(可能,我不知道它是做什么的)
line[val].setResultTableFormatter((builder, series, xValue, yValue) => {
for(var key in array) {
builder.addRow(array[key]);
}
return builder;
});
作为旁注,在这里使用let
或const
会更好。这里有一篇关于为什么它更好的文章。长话短说,在这种情况下,var
将在for
循环之外可用,这是不必要的。使用let
或const
(如果你以后不改变变量)就可以很好地完成这项工作,并且它将留在循环内。