javascript - setInterval函数不停止而是无限运行

标签 javascript jquery setinterval

请检查: http://jsfiddle.net/wmaokqh3/

<div id="message">
</div>
<audio id="bgm" src="http://www.freesfx.co.uk/rx2/mp3s/9/10780_1381246351.mp3">
</audio>

<div id="count">
</div>


function Typer() {
  var dfd = $.Deferred();
  var srcText = 'EXAMPLE';
  var i = -(1);
  var result = '';
  setInterval(function() {
      if (i == srcText.length) {
        clearInterval(this);
        dfd.resolve();
      };
      $("#count").append('<br>i =' + i + ' , ');
      i++;
      result += srcText[i].replace("\n", "<br />");
      $("#message").html(result + '---' + i + ' , ');
    },
    1000);
  return dfd.promise();
}
function playBGM() {
  var playsound = $.Deferred();
  $('#bgm')[0].play();
  $("#bgm").on("ended", function() {
    playsound.resolve();
  });
  return playsound.promise();
}
function thirdFunction() {
  alert('third function');
}
Typer().then(playBGM).then(thirdFunction);

最佳答案

不确定您在哪里学会了 clearInterval(this) 但那是不正确的。 this 与当前间隔无关。您需要使用为间隔生成的 id 才能取消它。

var myInterval = window.setInterval(  )

并且在您的代码中您需要使用该 id

clearInterval(myInterval)

关于javascript - setInterval函数不停止而是无限运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49642563/

相关文章:

IE 中的 javascript 错误无法查看或解决问题

javascript - 使用 setInterval 移动轮播

javascript - setInterval 内的 jquery .delay()

javascript - 迭代 Backbone 集合

javascript - 为什么这个 $_GET 在 GET 提交表单后为空,为什么在表单提交时附加 "?"到 URL

javascript - jquery ui ajax 选项卡 - 重新加载选项卡或更改选项卡位置?

Javascript setInterval - 如何设置良好的时间和性能

javascript - 从 JavaScript (MVC) 调用 Sitecore Controller 方法

javascript - $http post 请求不起作用并发送 "Possible unhandled rejection"错误

javascript - $target = $(target) in javascript\jQuery.需要语法解释