2011-08-25 26 views
18

¿Alguien puede explicar qué es exactamente Eteration y muestra un ejemplo?Eteración: explicación y ejemplo

fuente: Long running tasks YUI el blog por Douglas Crockford

+0

He editado mi respuesta con información más relevante, explicando exactamente qué es ** eteration ** y cómo se usa en el contexto de Javascript. – luvieere

+0

He agregado un ejemplo de código, con una explicación asociada. – luvieere

Respuesta

32

Inicialmente, pensé que era sólo un error tipográfico de iteración, como búsqueda en línea para eteration produce resultados significativos.

Pero, entonces, me encontré con references que dicen que el término es acuñado por el propio Crockford, en una de sus charlas.
línea, el único lugar donde podía encontrar una explicación se encuentra en su página, en The Factorial Tutorial, un artículo donde, en Ley 2, como un comentario a un código de ejemplo, afirma:

Ley 2a : mensaje de iteración (eteration)

Esto parece ser parte de un par relacionado de términos, como su siguiente ejemplo de código, que realiza la repetición sin necesidad de utilizar una pila, contiene el otro miembro de la pareja:

Ley 2b: Mensaje de recursividad (ecursion)

Por lo tanto, parece que eteration y ecursion son términos inventados y definido por el propio Crockford para referirse a la iteración mensaje y recursividad en el contexto de la E Programming Language, diseñado sobre Java para desarrolladores que escriben aplicaciones distribuidas.

El hecho de que el lenguaje se llama E es quizás una razón para dar a sus sabores de iteración y recursión específicos de la terminología elegida (** *** e teration * y ** *** e cursion *).

Si el contexto de Javascript, Crockford explica el término eteration como parte de la charla Crockford on JavaScript -- Scene 6: Loopage, a partir del minuto 30:40 :

Eteration significa romper una tarea en múltiples vueltas de modo que en cada edición , en lugar de pasar por un bucle convencional, en la parte inferior del bucle llamamos setTimeOut, pasándole una función que hace que hagamos la siguiente edición. Eso significa que los giros van a ser corto - el turno solo es el mismo que una eteración - y podemos hacer como tantas eteraciones como queramos y no bloquear el bucle de evento.

El resultado es que, en lugar de un bucle estrecho, el bloqueo de la interfaz si se tarda demasiado tiempo, los eteration horarios de cada paso del bucle, en una cadena que sólo los bloques de la interfaz mientras se ejecuta el reales de paso no entre pasos. Esto permite realizar tareas de larga ejecución en el mismo hilo que la interfaz (Javascript es de subproceso único), mientras se mantiene la capacidad de respuesta de la aplicación.

Echa un vistazo a la charla completa en mucha mejor calidad y acompañado de una transcripción de texto completo here.

También, para una referencia sobre cómo se podría implementar dicha técnica, considere la situación siguiente:

<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 eteration en curso, la otra añadiendo el texto ¡La interfaz sigue siendo receptiva! en cada Pruébeme presione el botón. Como puede ver en el código, los pasos de eteración están programados por setTimeout con 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 eteració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 avanza con el trabajo que tiene que realizar (en este caso, simplemente mostrando índices).

+0

Quizás, pero el término se usa en el contexto de JavaScript y Nodejs. No E o Java. – Bakudan