请查看以下内容: 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);
答案 0 :(得分:3)
不确定您在哪里学习clearInterval(this)
,但这不正确。 this
与当前间隔无关。您需要使用生成的间隔ID来取消它。
var myInterval = window.setInterval( )
在您的代码中,您需要使用该ID
clearInterval(myInterval)
答案 1 :(得分:1)
您必须将setInterval
分配给变量才能在以后清除它:
var result = '';
const myInterval = setInterval(function() {
if (i == srcText.length) {
clearInterval(myInterval);
答案 2 :(得分:1)
因此编码中没有任何内容clearInterval(this)
clearInterval函数需要一个变量在paranthesis中为了给它一个变量你应该将interval函数设置为一个变量,该变量应该是这样的var inter = window.setInterval(function() {}, 1000);