Openlayers 在构造几何图形时,在循环中重新绘制几何图形

Openlayers 在构造几何图形时,在循环中重新绘制几何图形,openlayers,openlayers-6,Openlayers,Openlayers 6,我有一个循环,提示用户输入,然后根据该输入将一个新段添加到字符串中 while (data) { point = processData(data) // returns an array [x,y] linestringFeature.getGeometry().appendCoordinate(point) data = prompt('Enter data') } 但是,直到用户退出循环,才会绘制线字符串。我需要向用户提供视觉反馈,因为每个线段都添加到了线条字符串中。我使用的

我有一个循环,提示用户输入,然后根据该输入将一个新段添加到字符串中

while (data) {
  point = processData(data) // returns an array [x,y]
  linestringFeature.getGeometry().appendCoordinate(point)
  data = prompt('Enter data')
}

但是,直到用户退出循环,才会绘制线字符串。我需要向用户提供视觉反馈,因为每个线段都添加到了线条字符串中。我使用的是OpenLayers 6.5。关于如何做到这一点,你有什么建议吗?

这不是一个正确的答案,但评论有点长

只是一个想法,但请尝试添加超时:

while (data) {
  point = processData(data) // returns an array [x,y]
  linestringFeature.getGeometry().appendCoordinate(point)
  window.setTimeout(() => {
    data = prompt('Enter data')
  }, 100)
}
100可以是任何数字,真的

如果这样做有效,则表明浏览器没有在while循环/阻塞提示序列中重新绘制页面


如果它不起作用,请告诉我

请提供一份能证明你的问题的报告,最好是一份我最终完成的工作。我尝试了其他各种表示完成的事件处理程序(例如,draund、rendercomplete),但没有一个给出期望的结果。OpenLayers只是在一切完成之前不会重新绘制图层。从性能的角度来看,如果仍然存在潜在的更改,您不希望重新绘制。我只希望在这种情况下有一个更优雅的解决方案。很高兴它奏效了。我知道你的意思-如果有更好的方法就好了。至少这会给你一个攻击角度,我想。。。基于承诺的结构可以做到这一点吗?创造一个承诺。基于诸如rendercomplete之类的OL事件解析承诺。并打开promise resolution提示。