1. Descripción general
El generador es un nuevo tipo de datos introducido por ES6. Parece una función. Además de usar retorno, el rendimiento se puede devolver varias veces.
El generador se define por la función *, (nota * número),
2. Ejemplo
Las funciones no pueden guardar el estado, y a veces se necesitan variables globales para guardar números;
2.1
'Use Strict'; function next_id () {var id = 1; while (id <100) {rindi id; id ++; } return id;} // prueba: var x, pass = true, g = next_id (); for (x = 1; x <100; x ++) {if (g.next (). valor! == x) {pass = false; alerta ('Prueba fallida!'); romper; }} if (pass) {alerta ('Prueba pasada!');}2.2 Un iterador de bucle infinito
función* idmaker () {var index = 0; while (true) rendimiento índice ++;} var gen = idmaker (); // "Generator {}" console.log (gen.next (). Valor); // 0console.log (gen.next (). Valor); // 1console.log (gen.next (). Valor); // 22.3Generator.prototype.next ()
Cuando termina la iteración, generador.next (). Done === True, antes de finalizar === Falso
función* gen () {rendimiento 1; rendimiento 2; rendimiento 3;} var g = gen (); // "Generador {}" G.Next (); // "objeto {valor: 1, hecho: falso}" g.next (); // "objeto {valor: 2, hecho: falso}" g.next (); // "objeto {valor: 3, hecho: falso}" g.next (); // "Object {valor: indefinido, hecho: verdadero}"2.4 generador.prototype.return ();
El método de retorno devuelve el valor del parámetro dado y finaliza el iterador
ejemplo
función* gen () {rendimiento 1; rendimiento 2; rendimiento 3;} var g = gen (); g.next (); // {valor: 1, hecho: falso} g.return ("foo"); // {valor: "foo", hecho: true} g.next (); // {valor: indefinido, hecho: verdadero}Tenga en cuenta que si el valor de Hets es verdadero, y luego la devolución de llamadas, el valor devuelto también estará indefinido.
function* gen () {rendimiento 1;} var g = gen (); console.log (g.next ()); // {valor: 1, hecho: falso} console.log (g.next ()); // {valor: indefinido, hecho: verdadero} console.log (g.rcreturn (1)); // {valor: indefinido, hecho: verdadero}2.5 generador.prototype.throw ()
El método Thorw () recupera la ejecución del iterador arrojando una excepción al iterador;
Devuelve un objeto de objeto con dos atributos: valor y hecho
function* gen () {while (true) {try {rendimiento 42; } catch (e) {console.log ("¡Catch de error!"); }}} var g = gen (); var a = g.next (); // {valor: 42, hecho: falso} var b = g.throw (nuevo error ("algo salió mal")); // "Error Catch!" // {valor: 42, ded: false} console.log (a); console.log (b.value+"::"+b.done);El artículo anterior en profundidad del tipo de datos del generador JS es todo el contenido que he compartido con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.