Załóżmy, że chcemy wysłać asynchronicznego AJAX żądanie do serwera, a gdy reaguje wysłać kolejną prośbę i powtarzać zawsze:Nieskończona pętla z asynchronicznym wzór zwrotnego w javascript
function sendXHR(url, callback) {
// Send XMLHttpRequest to server and call callback when response is received
}
function infinite() {
sendXHR('url/path', infinite);
}
infinite();
Zakładam tutaj, że zabraknie szybko ułożyć przestrzeń, więc jak mogę to zrobić (bez blokowania)?
Wzorzec przekazywania zwrotnego zamiast używania return
jest szczególnie popularny w przypadku node.js
. Jak ludzie tworzą nieskończone pętle? Nie wierzę, że większość silników JS wykonuje jakąkolwiek optymalizację połączeń.
Że nie zabraknie przestrzeń stosu, jak wtedy, gdy wywołanie zwrotne jest nazywane ramkami stosu poniżej, nie zawiera stosu poprzedniego połączenia 'nieskończonego '. –
@DanD. Próbowałem go w Chrome, dodając 'callback();' w 'sendXHR', i zgłasza komunikat' Maksymalny rozmiar stosu połączeń przekroczony' po około 9500 iteracjach. Firefox również mówi "zbyt wiele rekursji". – Flash
Cóż, być może jest coś ciekawego w * Wyślij XMLHttpRequest do serwera i zadzwoń do callback po otrzymaniu odpowiedzi * część. –