Masalah:
Dalam Node.js dan Mongoose, melaksanakan fungsi rekursif dalam gelung forEach boleh mengakibatkan gelung tak terhingga. Bagaimanakah kita boleh menghalang perkara ini?
Jawapan:
Memecah daripada gelung forEach secara langsung tidak mungkin, kerana ia dilaksanakan sebagai satu operasi tanpa struktur gelung tradisional. Walau bagaimanapun, terdapat kaedah alternatif untuk meniru tingkah laku melanggar:
1. Menggunakan Konteks:
Lepaskan hujah kedua kepada forEach untuk digunakan sebagai konteks, dan simpan pembolehubah boolean di dalamnya. Gunakan pernyataan if dalam fungsi forEach untuk menyemak boolean dan keluar jika perlu.
2. Pengendalian Pengecualian:
Sisipkan keseluruhan gelung forEach dalam blok tangkap cuba dan lemparkan pengecualian apabila anda ingin memecahkan. Kaedah ini kurang diutamakan kerana kesannya terhadap prestasi dan kebolehselenggaraan kod.
3. Menggunakan every() atau some():
Daripada forEach, gunakan kaedah every() atau some(), yang membenarkan lelaran tersuai, kawalan dan keluar awal berdasarkan nilai pulangan.
Contoh menggunakan setiap():
<code class="javascript">['a', 'b', 'c'].every(function(element, index) { // Do your thing, then: if (you_want_to_break) return false; else return true; });</code>
Atas ialah kandungan terperinci Bagaimana untuk Memecahkan Gelung Infinite dalam JavaScript forEach?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!