setInterval()内部的setTimeout()仅触发一次

fav*_*tti 1 javascript settimeout setinterval

授予以下代码:

function updateOdometers(odometers) {
    setTimeout(function(){
        odometers[1].update(odometers[1].value + 10);
    }, 500);

}

setInterval(updateOdometers(odometers), 2000);
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,此代码仅更新里程表的值一次,而不是内部延迟每2000ms更新一次.谷歌搜索/ SO-ing并没有给我带来太多结果.有任何想法吗?

Tel*_*kis 6

这一行:

setInterval(updateOdometers(odometers), 2000);
Run Code Online (Sandbox Code Playgroud)

应该

setInterval(function () {updateOdometers(odometers);}, 2000);
Run Code Online (Sandbox Code Playgroud)

否则你将调用updateOdometers(odometers)并将结果传递给setInterval.