等待for循环中的函数



我有如下代码

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;
});

作为旁注,在这里使用letconst会更好。这里有一篇关于为什么它更好的文章。长话短说,在这种情况下,var将在for循环之外可用,这是不必要的。使用letconst(如果你以后不改变变量)就可以很好地完成这项工作,并且它将留在循环内。

相关内容

  • 没有找到相关文章

最新更新