Czy ktoś może wyjaśnić, czym dokładnie jest Eteracja i pokazać przykład?Eteracja - wyjaśnienie i przykład
źródło: Long running tasks YUI blog Douglas Crockforda
Czy ktoś może wyjaśnić, czym dokładnie jest Eteracja i pokazać przykład?Eteracja - wyjaśnienie i przykład
źródło: Long running tasks YUI blog Douglas Crockforda
Początkowo myślałem, że to tylko literówka od iteracji, jak szukają w internecie eteration daje żadnych znaczących wyników.
Ale wtedy natknąłem się na references, który stwierdza, że termin został ukuty przez samego Crockforda, w jednym z jego przemówień.
online, to jedyne miejsce, gdzie mogę znaleźć wyjaśnienie jest po jego stronie, w The Factorial Tutorial, artykuł, gdzie w ustawy 2, jako komentarz do próbki kodu, stwierdza:
ustawa 2a : komunikat iteracja (eteration)
To wydaje się być częścią pokrewnej pary pojęć, jak jego kolejnej próbki kodu, który wykonuje rekursji bez użycia stos zawiera drugi element pary:
ustawa 2b: wiadomość rekurencji (ecursion)
Więc wydaje się, że eteration i ecursion są terminy wymyślone i określona przez samego Crockforda odnieść się do komunikatów iteracji i rekursji w kontekście E Programming Language, zaprojektowane na bazie Javy dla programistów, którzy piszą aplikacje rozproszone.
Fakt, że język nazywa się E jest prawdopodobnie powodem, aby nadać mu specyficzny charakter iteracyjno-rekurencyjny w wybranej terminologii (** e *** teration * i ** e *** cursion *).
Jeśli kontekst JavaScript, Crockforda wyjaśnia termin eteration jako część rozmowy Crockford on JavaScript -- Scene 6: Loopage, począwszy od chwili 30:40:
Eteration oznacza przerwać zadanie na kilka obrotów, tak aby na każdej metodzie, zamiast przechodzić przez konwencjonalną pętlę, na dole pętli, którą nazywamy
setTimeOut
, przekazujemy mu funkcję, która powoduje, że wykonujemy kolejną degenerację. Oznacza to, że zwoje będą krótkie - skręt jest tylko tak długi, jak jedna degeneracja - i możemy robić tak wiele, jak chcemy, i nie blokować pętli zdarzeń.
Rezultatem jest to, że zamiast szczelnego pętli blokowania interfejsu jeśli trwa zbyt długo, eteration harmonogramów każdy etap pętli w łańcuchu, który blokuje tylko interfejsu Rzeczywisty sporządzi kroku nie między krokami. Umożliwia to wykonywanie długotrwałych zadań w tym samym wątku co interfejs (Javascript jest jednowątkowy), przy jednoczesnym zachowaniu czasu reakcji aplikacji.
Zapoznaj się z pełną rozmową o znacznie lepszej jakości i z dołączonym transkrypcją pełnotekstową here.
Ponadto, dla odniesienia, jak taka technika może być realizowany, należy rozważyć następujący scenariusz:
<html>
<head>
<script type="text/javascript">
function testFeedback()
{
var feedbackDiv = document.getElementById("feedbackDiv");
feedbackDiv.innerHTML += "The Interface is Still Responsive!</br>";
}
var currentNumber = 0;
var loopStepDelay = 30;
function performLoopStep()
{
var numbersDiv = document.getElementById("numbersDiv");
numbersDiv.innerHTML = currentNumber++;
setTimeout("performLoopStep()", loopStepDelay);
}
setTimeout("performLoopStep()", loopStepDelay);
</script>
</head>
<body>
<div id="numbersDiv"></div>
</br>
</br>
<div id="feedbackDiv"></div>
</br>
</br>
<button onClick="testFeedback()">Try Me</button>
<body>
</html>
Istnieją dwa div
s, jeden wyświetlania wskaźników trwającego eteration, drugi dopisywania tekstu Interfejs nadal reaguje! na każdym przycisku myszy Wypróbuj mnie. Jak widać z kodu, kroki przetwarzania są zaplanowane przez pewien przedział czasu, co pozwala na interakcję użytkownika i przetwarzanie. W związku z tym kroki metalizacji będą nadal działać, gdy użytkownik kliknie przycisk i uruchomi aktualizację drugiego elementu div, zachowując szybkość odpowiedzi strony, wykonując rzeczywisty postęp z pracą, którą musi wykonać (w tym przypadku po prostu wyświetlając indeksy).
Być może, ale termin ten jest używany w kontekście JavaScript i Nodejs. Brak E lub Java. – Bakudan
Edytowałem swoją odpowiedź z bardziej istotnymi informacjami, wyjaśniającymi dokładnie, czym ** jest ** i jak jest używana w kontekście Javascript. – luvieere
Dodałem próbkę kodu z powiązanym wyjaśnieniem. – luvieere