Javascript 对于下一次迭代之前的循环延迟
我必须在循环中添加延迟,以便在前一个音频完成后播放下一个音频 因此,在进入下一个迭代之前,我需要延迟 代码片段Javascript 对于下一次迭代之前的循环延迟,javascript,Javascript,我必须在循环中添加延迟,以便在前一个音频完成后播放下一个音频 因此,在进入下一个迭代之前,我需要延迟 代码片段 for (var i=0; i<=total_units; i++) { var audio; switch (dispatch_units[i]) { case 'ST39': audio = new Audio('sounds/alert1.mp3'); break; case 'AL
for (var i=0; i<=total_units; i++) {
var audio;
switch (dispatch_units[i]) {
case 'ST39':
audio = new Audio('sounds/alert1.mp3');
break;
case 'ALS':
audio = new Audio('sounds/monty_engine.mp3');
break;
case 'ST38':
audio = new Audio('sounds/twotone.mp3');
break;
}
audio.play();
}
如果添加5秒延迟,我们将不胜感激。您不能以不会出现严重UI问题的方式延迟for循环的执行 相反,在前一个项目结束后5秒,使用一系列回调播放下一个项目:
var i = 0;
runOne();
function runOne() {
var audio;
switch (dispatch_units[i]) {
case 'ST39':
audio = new Audio('sounds/alert1.mp3');
break;
case 'ALS':
audio = new Audio('sounds/monty_engine.mp3');
break;
case 'ST38':
audio = new Audio('sounds/twotone.mp3');
break;
}
// If it's impossible for `audio` not to be set here, you can simplify this
if (audio) {
audio.addEventListener("ended", runNext);
audio.play();
} else {
setTimeout(runNext, 0);
}
function runNext() {
audio.removeEventListener("ended", runNext);
++i;
if (i <= total_units) {
setTimeout(runOne, 5000); // <=== 5000ms = 5 seconds
}
}
}
旁注:从0开始并通过是不寻常的,您不能以不会出现严重UI问题的方式延迟for循环的执行 相反,在前一个项目结束后5秒,使用一系列回调播放下一个项目:
var i = 0;
runOne();
function runOne() {
var audio;
switch (dispatch_units[i]) {
case 'ST39':
audio = new Audio('sounds/alert1.mp3');
break;
case 'ALS':
audio = new Audio('sounds/monty_engine.mp3');
break;
case 'ST38':
audio = new Audio('sounds/twotone.mp3');
break;
}
// If it's impossible for `audio` not to be set here, you can simplify this
if (audio) {
audio.addEventListener("ended", runNext);
audio.play();
} else {
setTimeout(runNext, 0);
}
function runNext() {
audio.removeEventListener("ended", runNext);
++i;
if (i <= total_units) {
setTimeout(runOne, 5000); // <=== 5000ms = 5 seconds
}
}
}
旁注:从0开始并通过来完成这项任务是不常见的
要停止间歇,请使用
代码示例
var i = 0;
var loop = setInterval(function() {
var audio;
switch (dispatch_units[i]) {
case 'ST39':
audio = new Audio('sounds/alert1.mp3');
break;
case 'ALS':
audio = new Audio('sounds/monty_engine.mp3');
break;
case 'ST38':
audio = new Audio('sounds/twotone.mp3');
break;
}
audio.play();
i++;
if(i<=total_units) {
clearInterval(loop);
}
}, 5000);
你可以用它来做
要停止间歇,请使用
代码示例
var i = 0;
var loop = setInterval(function() {
var audio;
switch (dispatch_units[i]) {
case 'ST39':
audio = new Audio('sounds/alert1.mp3');
break;
case 'ALS':
audio = new Audio('sounds/monty_engine.mp3');
break;
case 'ST38':
audio = new Audio('sounds/twotone.mp3');
break;
}
audio.play();
i++;
if(i<=total_units) {
clearInterval(loop);
}
}, 5000);
侦听onended事件=>object.addEventListenerended,myScript;使用SetTimeOutpunctoBeExecuted,1000;在延迟1秒后调用音频,必须用歌曲持续时间替换。ref:Listen for onended event=>object.addEventListenerended,myScript;使用SetTimeOutpunctoBeExecuted,1000;在延迟1秒后调用音频,必须用歌曲持续时间替换。参考:可以,但是如果音频剪辑的长度大于或小于5秒,它会变得很难看。@T.J.Crowder但是OP说如果增加5秒的延迟,任何帮助都将被感激。是的,也许他们真的是这么想的。更可能的是,在我看来,他们不希望在这种情况下音频重叠,但是……这些是救援系统的调度单元警报,你可以,但是如果音频剪辑长度大于或小于5秒,就会变得难看。@t.J.Crowder但OP说,如果增加5秒的延迟,任何帮助都将被感谢是的,也许他们真的是这么想的。更可能的是,在我看来,他们不希望在这种情况下音频重叠,但是…这些是救援系统的调度单元警报