如何阻止许多运行函数JS

时间:2014-07-04 21:40:48

标签: javascript

我尝试在此功能后显示一些文本,我想等待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。当标志将被执行时,不会运行。

什么是最佳选择?

2 个答案:

答案 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);
}