如何解决在 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 次。
您可以尝试在 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
(如果您之后没有更改变量)可以很好地完成工作并且它会留在循环内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。