Проверить, получила ли функция значение

Хочу проверить, получила ли функция значение и если нет, то вызвать эту функцию с задержкой.

function getHeight(height) {
  height=document.getElementsByTagName('html')[0].scrollHeight;
}

if (!getHeight(height)) {
  setTimeout(function () {
    getHeight();
  }
  , 100)
}


Ответы (2 шт):

Автор решения: dmitriy_vlz

Ну, у тебя функция ничего не возвращает,так что твоя проверка не сработает. Вот так попробуй.

function getHeight() {
  let height = document.getElementsByTagName('html')[0].scrollHeight;
  return height; 
}

if (!getHeight()) {
  setTimeout(function () {
    getHeight();
  }
  , 100)
}
→ Ссылка
Автор решения: vsemozhebuty

В данном варианте в параметре функции нет необходимости, поскольку вы в функцию ничего не передаёте. Вместо этого нужно из функции возвращать значение и проверять его уже в месте вызова. Вдобавок, нет нужды оборачивать getHeight() в другую функцию, если в этой обёртке вы больше ничего не делаете, можно просто передать саму функцию в setTimeout()

function getHeight() {
  return document.getElementsByTagName('html')[0].scrollHeight;
}

if (!getHeight()) {
  setTimeout(getHeight, 100)
}

(Обратите внимание, что в этом упрощённом примере запуск getHeight() с задержкой не имеет никакого эффекта — если вам нужно дождаться положительного значения, это нужно будет делать в цикле с промисами или в setInterval() с дополнительными проверками).

function getHeight() {
  return document.getElementsByTagName('html')[0].scrollHeight;
}

const intervalID = setInterval(() => {
  if (getHeight()) {
    clearInterval(intervalID);
    // Go on...
  }
}, 100);
→ Ссылка