我尝试在此功能后显示一些文本,我想等待3秒,接下来我想运行其他功能。我的伪代码是:
showText();
wait 3 seconds
showSecondText();
showOtherText();
现在我写道:
function helloOnClick(){
showText();
var myVar = setInterval(function(){showSecondText(data); showOtherText(data); clearInterval(myVar); },3000);
}
现在几乎是完美的但是当我点击按钮并运行helloOnClick()很多次我的函数showSecondText()会一遍又一遍地运行因为setInterval创建了很多实例因为clearInterval只杀了一个?
如何解决此任务?我有两种可能性: 1.单击函数helloOnClick时可以禁用按钮,最后我可以启用 2.单击时,我可以将标志设置为true,并在完成更改后设置为false。当标志将被执行时,不会运行。
什么是最佳选择?
答案 0 :(得分:1)
您需要setTimeout()
,而不是setInterval()
。
Interval是一个循环,超时延迟。
答案 1 :(得分:1)
你可以使用setTimeout
,你应该在它自己的函数中提取显示文本进程,允许在进程完成时传入回调。
E.g。
function helloOnClick() {
yourButton.disabled = true;
startShowingText(function () {
yourButton.disabled = false;
});
}
function startShowingText(completed) {
showText();
setTimeout(function () {
showSecondText();
showOtherText();
completed && completed();
}, 3000);
}