首页 > 解决方案 > 在内部调用(js)的函数中使用setInterval?

问题描述

我这里有这样的代码。我想以几秒钟的时间间隔显示结果。但它不起作用。

const moveCranes = setInterval(function(plate, slot_a, slot_b, slot_c) {
    if (plate > 0) {
        moveCranes(plate - 1, slot_a, slot_c, slot_b);
        port_a.innerHTML = "Move plate " + plate + " from " + slot_a + " to " + slot_c + "<br />";
    moveCranes(plate - 1,slot_b, slot_a, slot_c);
    }
}, 2000);
moveCranes(input.value,"slot_a","slot_b","slot_c");

你能解释一下我做错了什么以及为什么 setInterval 不起作用?

标签: javascripthtmlcssfunctionecmascript-6

解决方案


你似乎在寻找

function moveCranes(plate, slot_a, slot_b, slot_c) { /*
^^^^^^^^ */
    setInterval(function() {
//              ^^^^^^^^^^ this inner function takes no parameters
        if (plate > 0) {
            moveCranes(plate - 1, slot_a, slot_c, slot_b);
            port_a.innerHTML = "Move plate " + plate + " from " + slot_a + " to " + slot_c + "<br />";
            moveCranes(plate - 1, slot_b, slot_a, slot_c);
        }
    }, 2000);
}

而且由于您再次递归调用该函数,您可能想使用setTimeout而不是setInterval.


推荐阅读