/ / setTimeout i jQuery: Uncaught RangeError: Przekroczono maksymalny rozmiar stosu wywołań [duplikat] - javascript, jquery, funkcja, settimeout

setTimeout i jQuery: Uncaught RangeError: Przekroczono maksymalny rozmiar stosu wywołań [duplicate] - javascript, jquery, function, settimeout

Próbuję wywołać moją klasę podczas ładowania strony, jakdobrze, jak również przeładować wyniki kiedykolwiek X sekund, jednak po samouczkach setTimeout, jquery wydaje się rzucać mi błąd, którego nie rozumiem, biorąc pod uwagę brak składni.

Uncaught RangeError: Przekroczono maksymalny rozmiar stosu wywołań

var rand = function() {
return Math.random().toString(36).substr(2);
};

lhc();

function lhc(){
$("#lhcb a").each(function() {
var rawlink = $(this).attr("href");
var link = encodeURIComponent( rawlink );
var token = rand();
var href = $(this).prop("href");
var proceed = $.getJSON( "lhc/link.php?link=" + link + "&a=c", function( data ) {
if ( data.proceed == "true" ) {
return true;
} else {
return false;
}
}).error(function(e) { alert("error"); console.log(e);});
if ( href.match("^javascript:") ) {
proceed = false;
}
if ( rawlink.charAt(0) != "#" ) {
if ( proceed ) {
$(this).after( " <span style="font-size:xx-small;">( Hits: <span id="" + token + ""></span> )</span>" );
$.getJSON( "lhc/link.php?link=" + link + "&a=q", function( data ) {
$("#" + token).html(data["hits"]);
}).error(function(e) { alert("error"); console.log(e);});
$(this).attr( "href", "lhc/link.php?link=" + link + "&a=g" );
}
}

});
setTimeout(lhc(), 5000);
}

Odpowiedzi:

26 dla odpowiedzi nr 1

Zmiana

setTimeout(lhc(), 5000);

do

setTimeout(lhc, 5000);

Wywołujesz funkcję bezpośrednio bezlimit czasu po dodaniu nawiasu, a wywołanie funkcji od razu w tej samej funkcji szybko staje się nieskończoną pętlą, która wypełnia stos


0 dla odpowiedzi nr 2

Możesz zignorować błąd, jeśli jest uruchomiony <script>window.onerror = function(){ return true;} </script> I nastaw setTimeout(lhc, 5000); trochę.