具有更改超时值的setTimeout

时间:2016-06-23 19:54:50

标签: javascript jquery arrays settimeout

我正在jQuery中进行一些超时但是我的超时值出现了问题。 所以,我得到了一个值数组(例如:[“2490”,“4200”]),我希望我的超时在2490ms后打印数组的值,然后返回0并最终打印下一个值4200ms后的数组。但它永远不会回到0

Actualy,这是jQuery代码:

var array = ['2490', '4200'];
var mytimeout;

for (var i = 0; i < array.length; ++i)
{
    doTimeout(i);
    clearTimeout(mytimeout);
}

function doTimeout(i) {
    mytimeout = setTimeout(function() {
       $('#text').append(array[i]);
    }, array[i]);
}

JSFIDDLE https://jsfiddle.net/2aftscou/

所以一切似乎都有效,除了我希望我的计时器在结束时重新初始化为0(这就是我使用 clearTimeout ()的原因,但它在这里不起作用情况)。

我真的不知道该怎么做

2 个答案:

答案 0 :(得分:1)

这不起作用。你的超时将在开始后被杀死。在执行旧的超时后,您必须开始新的超时。

像这样的东西

function doTimeout(i) {
    mytimeout = setTimeout(function() {

    $('#text').append(array[i]);
    i++;
if (i<array.length) {
doTimeout(i)
 }

   }
}

答案 1 :(得分:0)

您当前的实施正在立即清除超时。您可以将超时与此类链接一起链接

var array = ['2490', '4200'];
var mytimeout;

function doTimeout(i) {
  mytimeout = setTimeout(function() {
    $('#text').append(array[i]);
    if (i <= array.length)
      doTimeout(i + 1);
  }, array[i]);
}

doTimeout(0);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="text">

</p>