我知道这有很多变种,但我无法弄清楚为什么这个不循环。它只运行一次segmentConstruction。
var timer;
timer = setInterval(segmentConstruction(multipointCoords,whaleTime), 1000);
function segmentConstruction(multipointCoords,whaleTime){
console.log(multipointCoords[0][0]);
console.log(whaleTime[0][0]);
console.log(i);
if (i > 10) {
clearInterval(timer);
}
else {
i++;
timer;
};
};
答案 0 :(得分:0)
因为setInterval(segmentConstruction(multipointCoords,whaleTime), 1000);
与:
var t = segmentConstruction(multipointCoords,whaleTime);
setInterval(t, 1000);
从IE10开始,您可以:
setInterval(segmentConstruction, 1000, multipointCoords, whaleTime);
答案 1 :(得分:0)
你不应该以这种方式传递函数参数。
您可以在匿名函数中调用函数带参数 此解决方案适用于所有浏览器:
timer = setInterval(function() {
segmentConstruction(multipointCoords,whaleTime);
}, 1000);
function segmentConstruction(coords, time)
{
// ...
}
此方法仅用于不带参数的函数:
timer = setInterval(segmentConstruction, 1000);
function segmentConstruction()
{
// ...
}
答案 2 :(得分:0)
这是因为在启动间隔时,segmentConstruction函数会调用一次。 有两种方法可以解决它:
将setConstruction包装成setInterval结构中的闭包,如下所示:
setInterval(function(){segmentConstruction(multipointCoords,whaleTime);},1000);
segmentConstruction应该返回闭包:
function segmentConstruction(multipointCoords,whaleTime){
return function () {
console.log(multipointCoords[0][0]);
console.log(whaleTime[0][0]);
console.log(i);
if (i > 10) {
clearInterval(timer);
}
else {
i++;
timer;
}
};
}