下記のようなコードでTableauと呼ばれるオブジェクトをSetIntervalでリロードしています。
ただしSetIntervalは定期的にリロード処理の完了、未完了に無関係に実行キューを吐いてしまいます。リロード処理が間に合わない場合更新がとまってしまいので、何かいい方法はないでしょうか?
よろしくお願いします。

<!DOCTYPE html>
<html lang="en">
  <head>
  <title>Tableau JavaScript API</title>
  <script type="text/javascript" src="http://servername/javascripts/api/tableau_v8.js"></script>
  </head>
  <body>
  <div id="tableauViz"></div>

<script type='text/javascript'>

var placeholderDiv = document.getElementById("tableauViz");

  var url = "http://servername/t/311/views/Mayorscreenv5/MayorScreenv2";

  var options = {
    hideTabs: true,
    width: "100%",
    height: "1000px"
  };

  var viz = new tableauSoftware.Viz(placeholderDiv, url, options);

setInterval(function () {viz.refreshDataAsync() }, 3000);

</script>

</body>
</html>