Проверить, получила ли функция значение
Хочу проверить, получила ли функция значение и если нет, то вызвать эту функцию с задержкой.
function getHeight(height) {
height=document.getElementsByTagName('html')[0].scrollHeight;
}
if (!getHeight(height)) {
setTimeout(function () {
getHeight();
}
, 100)
}
Ответы (2 шт):
Ну, у тебя функция ничего не возвращает,так что твоя проверка не сработает. Вот так попробуй.
function getHeight() {
let height = document.getElementsByTagName('html')[0].scrollHeight;
return height;
}
if (!getHeight()) {
setTimeout(function () {
getHeight();
}
, 100)
}
В данном варианте в параметре функции нет необходимости, поскольку вы в функцию ничего не передаёте. Вместо этого нужно из функции возвращать значение и проверять его уже в месте вызова. Вдобавок, нет нужды оборачивать 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);