Reinput en JavaScript

Me gustaría mejorar mi comprensión de la palabra reinput.

Es esta function reentrante?

function* foo() { yield 1; yield 2; } 

¿Y éste?

 function foo() { return 1; } 

¿Y éste?

 var x = 0; function foo() { return x++; } 

¿Y éste?

 function foo() { setTimeout(foo, 1000); } 

One Solution collect form web for “Reinput en JavaScript”

Una function reentrent es una function cuya ejecución se puede reanudar:

En informática, un progtwig o subrutina de computadora se llama reinput si se puede interrumpir en el medio de su ejecución y luego se vuelve a llamar de forma segura ("reingresado") antes de que las invocaciones anteriores completen la ejecución.

En el browser / nodo JavaScript, todo el multiprocesamiento es cooperativo (sin interrupciones ni cambios de context). Una function regular siempre se ejecuta hasta completarse en JavaScript. (1)

Entonces, en su caso, la única function reentrent es la primera ya que no ejecuta su código hasta su finalización y puede reanudarse en un momento posterior.

  • La segunda function es solo una function regular.
  • El tercero usa un ámbito externo, que es similar porque permite que una function mantenga cierto estado. No es lo mismo, ya que la function no se puede reanudar.
  • El cuarto acaba de ejecutarse de manera inmediata (progtwig otra invocación del mismo, pero eso depende de la plataforma y no de JavaScript).

De hecho, se puede decir que los generadores permiten la multitarea cooperativa en JavaScript con una syntax reentrent. Antes de los generadores, todo el código se ejecutó por completo.

(1) O nunca se detiene, pero nunca se interrumpe. Además, en plataforms comunes. Hay plataforms (como Rhino) que rompen la regla. Son muy raros y no usan el mismo model de ejecución de concurrency que el browser / nodo JS.

Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.