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

作为旁注,在这里使用 letconst 会更好。 Here's an article about why it's better。长话短说,在这种情况下,var 将在 for 循环之外可用,这不是必需的。使用 letconst(如果您之后不更改变量)将很好地完成工作并且它会留在循环中。