Javascript: отложенная рекурсия с setTimeout [дубликат]

Это сравнивает два несортированных массива:

function areEqual(a, b) {
  if ( a.length != b.length) {
    return false;
  }
  return a.filter(function(i) {
    return !b.includes(i);
  }).length === 0;  
}
0
задан Phillip Brandel 15 January 2019 в 23:38
поделиться

2 ответа

Вы вызываете функцию немедленно, а не вызываете ее в рамках обратного вызова setTimeout.

function sayLetter(n)
{
    if (n > 0)
    {
        console.log(n)
        setTimeout(() => {
          sayLetter(n-1)
        }, 1000); 
    }
}

sayLetter(3);

0
ответ дан Nik Kyriakides 15 January 2019 в 23:38
поделиться

Я исправил проблему, переключив setTimeout с

setTimeout(sayLetter(n-1), 1000);

на

setTimeout(function() { sayLetter(n-1), }, 1000);
0
ответ дан Bhargav Rao 15 January 2019 в 23:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: