Buradaki tüm cevaplara şaşırıyorum ...
Bunu dene:
window.setTimeout(function() { }, 0);
0 zaman aşımına dikkat edin. Bu rastgele bir sayı değil ... anladığım kadarıyla (anlayışım biraz sarsıcı olabilir), biri makro olaylar ve biri mikro olaylar için olmak üzere iki javascript olay kuyruğu var. "Daha geniş" kapsamlı kuyruk, kullanıcı arayüzünü (ve DOM'u) güncelleyen görevleri tutarken, mikro kuyruk hızlı görev türü işlemleri gerçekleştirir.
Ayrıca, bir zaman aşımı ayarlamanın, kodun tam olarak belirtilen değerde çalışacağını garanti etmediğini unutmayın. Bunun yaptığı şey aslında işlevi daha yüksek sıraya (UI / DOM'u işleyen) koyar ve belirtilen zamandan önce çalıştırmaz.
Bu, zaman aşımının 0 olarak ayarlanmasının, onu javascript olay kuyruğunun UI / DOM kısmına, bir sonraki olası fırsatta çalıştırılmak üzere koyacağı anlamına gelir.
Bu, DOM'un önceki tüm kuyruk öğeleriyle güncellendiği anlamına gelir (örneğin, aracılığıyla eklenir $.append(...);ve kodunuz çalıştığında, DOM tamamen kullanılabilir).
(ps - Bunu Secrects of the JavaScript Ninja'dan öğrendim - mükemmel bir kitap: https://www.manning.com/books/secrets-of-the-javascript-ninja )
append()çok az zaman alır.