问题描述
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 次。
您可以尝试在 console.log
中添加一个 setResultTableFormatter
,如下所示:
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,yValue) => {
for(var key in array) {
builder.addRow(array[key]);
}
return builder;
});
作为旁注,在这里使用 let
或 const
会更好。 Here's an article about why it's better。长话短说,在这种情况下,var
将在 for
循环之外可用,这不是必需的。使用 let
或 const
(如果您之后没有更改变量)可以很好地完成工作并且它会留在循环内。