这是Javascript阻止/异步情况吗?

时间:2019-01-28 15:09:28

标签: javascript

用户单击地图并调用clickMap,显示DIV#calculating,完成地图计算,然后在updateResults中隐藏DIV#calculating。

但是DIV永远不会显示在屏幕上。

控制台日志显示

block 9775.199999996403
none 10517.899999998917

无论我从没看过DIV,显示和隐藏之间的延迟可能从100ms到5000ms。

function clickMap(e) {
  if (myAStar.nodesPosition[e.offsetY][e.offsetX]) {
    document.getElementById("calculating").style.display = "block";
    console.log(document.getElementById("calculating").style.display, performance.now());
    myAStar = new AStarPathFinder(mapW, mapH);
    path = [];
    myAStar.setStart(0, 0);
    myAStar.setDestination(e.offsetX, e.offsetY);
    myAStar.wh = document.getElementById('hWeight').value;
    myAStar.loadMap(map);
    findPath();
    drawMap();
    updateResults();
  } else {
    mapCanvas.classList.add("oops");
    setTimeout(() => {
      mapCanvas.classList.remove("oops");
    }, 500);
  }
}

function updateResults() {
  document.getElementById("calculating").style.display = "none";
  console.log(document.getElementById("calculating").style.display, performance.now());
}

0 个答案:

没有答案