1. Ikhtisar
Generator adalah tipe data baru yang diperkenalkan oleh ES6. Itu terlihat seperti fungsi. Selain menggunakan pengembalian, hasil dapat dikembalikan beberapa kali.
Generator didefinisikan oleh fungsi *, (note * number),
2. Contoh
Fungsi tidak dapat menghemat keadaan, dan kadang -kadang variabel global diperlukan untuk menghemat angka;
2.1
'Gunakan ketat'; function next_id () {var id = 1; while (id <100) {ID Yield; id ++; } return id;} // test: var x, pass = true, g = next_id (); for (x = 1; x <100; x ++) {if (g.next (). value! == x) {pass = false; waspada ('tes gagal!'); merusak; }} if (pass) {alert ('test lulus!');}2.2 Iterator loop tak terbatas
fungsi* idMaker () {var index = 0; while (true) yield index ++;} var gen = idmaker (); // "generator {}" console.log (gen.next (). Value); // 0console.log (gen.next (). Value); // 1console.log (gen.next (). Value); // 22.3Generator.prototype.next ()
Saat iterasi berakhir, generator.next (). Done === true, sebelum berakhir === false
fungsi* gen () {hasil 1; hasil 2; hasil 3;} var g = gen (); // "generator {}" g.next (); // "objek {value: 1, selesai: false}" g.next (); // "objek {value: 2, selesai: false}" g.next (); // "objek {value: 3, selesai: false}" g.next (); // "Object {value: Undefined, Done: True}"2.4 Generator.Prototype.Return ();
Metode pengembalian mengembalikan nilai parameter yang diberikan dan mengakhiri iterator
contoh
fungsi* gen () {hasil 1; hasil 2; hasil 3;} var g = gen (); g.next (); // {value: 1, selesai: false} g.return ("foo"); // {value: "foo", done: true} g.next (); // {value: Undefined, Done: True}Perhatikan bahwa jika nilai yang dilakukan adalah benar, dan kemudian panggilan kembali, nilai yang dikembalikan juga akan tidak ditentukan.
fungsi* gen () {hasil 1;} var g = gen (); console.log (g.next ()); // {value: 1, selesai: false} console.log (g.next ()); // {value: undefined, done: true} console.log (g.return (1)); // {value: Undefined, Done: True}2.5 Generator.prototype.throw ()
Metode thorw () mendapatkan kembali eksekusi iterator dengan melemparkan pengecualian ke iterator;
Mengembalikan objek objek dengan dua atribut: nilai dan selesai
fungsi* gen () {while (true) {coba {hasil 42; } catch (e) {console.log ("kesalahan tangkapan!"); }}} var g = gen (); var a = g.next (); // {value: 42, Done: false} var b = g.throw (kesalahan baru ("sesuatu yang salah")); // "kesalahan tangkapan!" // {value: 42, selesai: false} console.log (a); console.loge.valeeeeeeeeeeArtikel di atas pemahaman mendalam tentang tipe data generator JS adalah semua konten yang telah saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.