Mengapa setTimeout(fn, 0) Boleh Menyelesaikan Isu Populasi Pilihan Dinamik
Menghadapi pepijat di mana nilai pra-pilih elemen terpilih yang diisi secara dinamik kekal tidak betul dalam IE6, pembangun mencari penjelasan untuk keberkesanan penggunaan yang tidak dijangka setTimeout(fn, 0) untuk menangani isu tersebut.
Masalah berpunca daripada keadaan perlumbaan antara pemulaan senarai juntai bawah penyemak imbas dan kod JavaScript yang cuba menetapkan indeks yang dipilih. Perlumbaan ini, yang wujud dalam urutan tunggal pelaksanaan JavaScript, meninggalkan kod di hadapan kesediaan penyemak imbas untuk mengemas kini DOM.
Penyelesaian setTimeout(fn, 0) menjadualkan fungsi panggil balik untuk dijalankan secara tidak segerak selepas kelewatan singkat ( sekitar 10ms). Kelewatan ini membenarkan penyemak imbas untuk memulakan DOM, memberikan masa yang mencukupi untuk kod menetapkan indeks yang dipilih dengan tepat.
Penyelesaian ini secara berkesan memintas keadaan perlumbaan dengan menangguhkan pelaksanaan kod sehingga penyemak imbas telah melengkapkan kemas kini DOM yang diperlukan . Perlu diingat bahawa versi Internet Explorer tertentu menunjukkan tingkah laku aneh yang memerlukan penyelesaian sedemikian atau boleh menunjukkan isu tulen dalam pangkalan kod. Untuk pemahaman yang lebih mendalam tentang konsep ini, rujuk ceramah Philip Roberts "Apakah gelung acara itu?"
Atas ialah kandungan terperinci Mengapakah `setTimeout(fn, 0)` Membetulkan Isu Pemilihan Elemen Pilihan Dinamik dalam Pelayar Lama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!