setInterval() 序列中的 setTimeout() 仅触发一次

setTimeout() inside setInterval() sequence fires off only once

授予以下代码:

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

}

setInterval(updateOdometers(odometers), 2000);

无论出于何种原因,这段代码只更新一次里程表的值,而不是每 2000 毫秒更新一次,内部有延迟。 Googling/SO-ing 周围并没有给我带来多少结果。有什么想法吗?

这一行:

setInterval(updateOdometers(odometers), 2000);

应该是

setInterval(function () {updateOdometers(odometers);}, 2000);

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