Javascript Функция SetTimeout не приостанавливается после выполнения - PullRequest
0 голосов
/ 18 февраля 2020

Я проверяю изменения в классе CSS. Я хочу, чтобы проверка происходила каждые 1000 миллисекунд. В настоящее время в консоли Google Chrome я вижу, что она проверяется без каких-либо задержек, в результате чего веб-страница занимает sh. В чем проблема с приведенной ниже функцией setTimeout? Возможно, есть и другой способ проверки изменения класса CSS?

var itemInfo = null;

itemInfo = document.getElementById('option-item-info');
while (itemInfo.className == "disabled") {
    console.log("Test 1");
    getOptionItemInfo();
}

function getOptionItemInfo() {
    setTimeout(function() {
        console.log("Checking...");
        itemInfo = document.getElementById('option-item-info');
    }, 1000);
}

1 Ответ

5 голосов
/ 18 февраля 2020

Ваш while l oop не будет ждать обратного вызова setTimeout asyn c, он просто будет вызывать тонны setTimeouts, пока ваш браузер не выйдет из строя. Вместо этого просто отключите setTimeout один раз, а затем вызывайте его снова из-за обратного вызова, если вы не выполнили желаемое условие.

getOptionItemInfo();

function getOptionItemInfo() {
    setTimeout(function() {
        console.log("Checking...");
        var itemInfo = document.getElementById('option-item-info');
        if (itemInfo.className == "disabled") {
            getOptionItemInfo(); 
        } else {
            console.log("done!");
        }
    }, 1000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...