在 for 循环中等待函数

时间:2021-03-03 16:50:39

标签: javascript lightningchart

我有如下代码

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,但它仍然只执行一次。

1 个答案:

答案 0 :(得分:0)

在不知道 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, 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(如果您之后没有更改变量)可以很好地完成工作并且它会留在循环内。

相关问题