在 for 循环中等待函数
Wait for function inside for loop
我有如下代码
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 次?
我尝试像其他 Whosebug 答案中解释的那样添加 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
会更好。 Here's an article about why it's better。长话短说,在这种情况下,var
将在 for
循环之外可用,这不是必需的。使用 let
或 const
(如果您之后不更改变量)将很好地完成工作并且它会留在循环中。
我有如下代码
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 次?
我尝试像其他 Whosebug 答案中解释的那样添加 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
会更好。 Here's an article about why it's better。长话短说,在这种情况下,var
将在 for
循环之外可用,这不是必需的。使用 let
或 const
(如果您之后不更改变量)将很好地完成工作并且它会留在循环中。