2

举个例子(我根本不是问如何取消/杀死一个 setTimeout,我只是用它来表示不同任务的不同处理时间):

<div id="content">
</div>

<p>Which color do you prefer ?</p>    
<button id="long" onClick="long_process();">Blue</button>
<button id="short" onClick="short_process();">Red</button>

<script>
  function long_process() {
    setTimeout(function() {
      $('div#content').text('My favorite color is blue');
    }, 10000);
  }

  function short_proccess() {
    setTimeout(function() {
      $('div#content').text('My favorite color is red');
    }, 1000);
  }

  $('button#long').click();
  $('button#short').click();
</script>

关于这个例子,你可能已经知道我要问的是,如果用户启动了一个应该接管它的短处理动作,我们如何才能停止长处理动作

在这个例子中,如果用户最喜欢的颜色是红色,但是用户点击了错误的(蓝色)按钮,然后点击了红色按钮,蓝色将是最后显示的颜色,因为它的过程较长。

我知道如何使用 pthread 库使用 C/C++ 来管理它,但我不知道使用 javascript,在某些情况下,100% 确定您的应用程序将显示什么非常重要。

谢谢 !

4

1 回答 1

2

创建计时器时,setTimeoutsetInterval返回可用于引用该计时器的 ID:

var long_timer;

function long_process() {
    long_timer = setTimeout(...);
}

当您想停止该计时器时,将该 ID 传递给clearTimeoutor clearInterval

if (long_timer) {
    clearTimeout(long_timer);
}
于 2013-02-17T22:09:21.753 回答