Saya terkejut dengan semua jawaban di sini ...
Coba ini:
window.setTimeout(function() { }, 0);
Catat 0 batas waktu. Ini bukan angka yang sewenang-wenang ... seperti yang saya mengerti (meskipun pemahaman saya mungkin agak goyah), ada dua antrian acara javascript - satu untuk acara makro dan satu untuk acara mikro. Antrean cakupan "lebih besar" menampung tugas-tugas yang memperbarui UI (dan DOM), sedangkan antrian mikro melakukan operasi jenis tugas cepat.
Sadari juga bahwa menyetel waktu tunggu tidak menjamin bahwa kode bekerja tepat pada nilai yang ditentukan. Apa yang dilakukan ini pada dasarnya adalah menempatkan fungsi ke antrean yang lebih tinggi (yang menangani UI / DOM), dan tidak menjalankannya sebelum waktu yang ditentukan.
Ini berarti bahwa menyetel waktu tunggu 0 akan menempatkannya di bagian UI / DOM dari antrean peristiwa javascript, untuk dijalankan pada kesempatan berikutnya yang memungkinkan.
Ini berarti DOM diperbarui dengan semua item antrian sebelumnya (seperti dimasukkan lewat $.append(...);, dan saat kode Anda berjalan, DOM tersedia sepenuhnya.
(ps - Saya mempelajarinya dari Secrects of the JavaScript Ninja - sebuah buku yang sangat bagus: https://www.manning.com/books/secrets-of-the-javascript-ninja )
append()hanya membutuhkan sedikit waktu.