javascript - tag - title html attribute
Eteración-explicación y ejemplo. (1)
Inicialmente, pensé que era solo un error tipográfico de iteración , ya que la búsqueda en línea de la eteración no produce resultados significativos.
Pero, luego, encontré references que afirman que el término fue acuñado por el mismo Crockford, en una de sus charlas.
En línea, el único lugar donde pude encontrar una explicación está en su página, en El tutorial factorial , un artículo donde, en la Ley 2 , como un comentario a un ejemplo de código, afirma:
Acto 2a: iteración del mensaje (repetición)
Esto parece ser parte de un par de términos relacionados, ya que su siguiente muestra de código, que realiza la recursión sin usar una pila, contiene el otro miembro del par:
Acto 2b: mensaje recursivo (ecursion)
Por lo tanto, parece que eteration y ecursion son términos inventados y definidos por el mismo Crockford para referirse a la iteración y recursión de mensajes en el contexto del lenguaje de programación E , diseñado sobre Java para desarrolladores que escriben aplicaciones distribuidas.
El hecho de que el lenguaje se llame E es quizás una razón para dar a sus sabores específicos de iteración y recursión la terminología elegida (** e *** teration * and ** e *** cursion *).
Si es el contexto de Javascript, Crockford explica el término eteration como parte de la charla Crockford en JavaScript - Scene 6: Loopage , a partir del minuto 30:40 :
Eteración significa dividir una tarea en múltiples turnos, de modo que en cada repetición, en lugar de ir a través de un bucle convencional, en la parte inferior del bucle llamamos
setTimeOut
, y lesetTimeOut
una función que nos hace realizar la siguiente repetición. Eso significa que los giros serán cortos (el turno es tan largo como una repetición) y podemos hacer tantas repeticiones como queramos y no bloquear el bucle de eventos.
El resultado es que, en lugar de un bucle estrecho, que bloquea la interfaz si tarda demasiado tiempo, la repetición programa cada paso del bucle, en una cadena que solo bloquea la interfaz mientras que el paso real se ejecuta, no entre pasos. Esto hace posible realizar tareas de larga duración en el mismo subproceso que la interfaz (Javascript es de un solo subproceso), mientras se mantiene la capacidad de respuesta de la aplicación.
Vea la charla completa en una calidad mucho mejor y acompañada por una transcripción de texto completo here .
Además, para una referencia sobre cómo se podría implementar una técnica de este tipo, considere el siguiente escenario:
<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>
Hay dos div
s, uno que muestra los índices de la publicación en curso, el otro que agrega el texto ¡ La interfaz aún responde! en cada botón Try Me presione. Como puede ver en el código, los pasos de generación están programados por setTimeout
un intervalo de tiempo aparte, lo que permite que la interacción del usuario tenga lugar y se procese también. Por lo tanto, los pasos de generación continuarán ejecutándose a medida que el usuario haga clic en el botón y active la actualización del segundo div, manteniendo la capacidad de respuesta de la página mientras realiza un progreso real con el trabajo que debe realizar (en este caso, simplemente mostrando los índices).
¿Puede alguien explicar qué es exactamente la Eteración y mostrar un ejemplo?
fuente: Tareas de larga ejecución YUI blog por Douglas Crockford