JS settimeout不起作用?

时间:2017-12-22 22:26:08

标签: javascript jquery html settimeout

我查看了类似的问题,但无法让setTimeout使用forEach循环,即使使用索引来增加延迟:

pointArray.forEach(function(p) {
    setTimeout(addPt(p, 24, red), pointArray.indexOf(p) * 100000);

});

看到我已经将延迟增加到可测量的ms并且乘以增加的索引 - 我知道索引在我控制台注销时起作用并且它增加到100,因为它是数组长度。

无论我console.log中的addPt是否同时发生。这有什么不对?

1 个答案:

答案 0 :(得分:1)

addPt(p, 24, red)

您正在立即调用该方法,而不是为setTimeout提供方法引用。如

setTimeout(addPt, 3000);

但是,由于您提供了输入,因此有几种方法可以通过方法参考来实现。

//a
setTimeout(function(){ addPt(p, 24, red); }, 3000);
//b
setTimeout(addPt.bind(addPt, p, 24, red), 3000);
//c as noted by Jonas W
setTimeout(addPt, 3000, p, 24, red);

两者都会将方法引用传递给setTimeout,并在持续时间过后让-it-执行该函数。