Использование setInterval в функции с внутренним вызовом (JS)? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть такой код здесь.Я хочу отобразить результат с интервалом в несколько секунд.Но это не работает.

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?

1 Ответ

0 голосов
/ 20 сентября 2018

Вы, похоже, ищете

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...