Maksimum çağrı yığını boyutu aşıldı hatası
Direct Web Remoting (DWR) JavaScript kütüphane dosyası kullanıyorum ve yalnızca Safari'de (masaüstü ve iPad) bir hata alıyorum
Diyor ki
Maksimum çağrı yığını boyutu aşıldı.
Bu hata tam olarak ne anlama geliyor ve işlemeyi tamamen durduruyor mu?
Ayrıca Safari
tarayıcısı için herhangi bir düzeltme (Aslında iPad Safari
de şöyle diyor
JS:yürütme zaman aşımını aştı
ki bunun aynı çağrı yığını sorunu olduğunu varsayıyorum)
473
3
Bu, kodunuzda bir yerde bir işlevi çağırdığınız ve bu işlevin de başka bir işlevi çağırdığı ve çağrı yığını sınırına ulaşana kadar bu şekilde devam ettiği anlamına gelir.
Bunun nedeni neredeyse her zaman karşılanmayan bir temel duruma sahip özyinelemeli bir işlevdir.
Yığını görüntüleme
Bu kodu düşünün.
İşte birkaç çağrıdan sonraki yığın...
Gördüğünüz gibi, çağrı yığını bir sınıra ulaşana kadar büyür: tarayıcının sabit kodlanmış yığın boyutu veya bellek tükenmesi.
Bunu düzeltmek için, özyinelemeli işlevinizin karşılanabilecek bir temel duruma sahip olduğundan emin olun...
Bazen aynı JavaScript dosyasını yanlışlıkla iki kez içe aktarırsanız/eklerseniz bu durumla karşılaşabilirsiniz, denetçinin kaynaklar sekmesinde kontrol etmeye değer.
Kodunuzun bir yerinde özyinelemeli bir döngü var (yani yığın dolana kadar kendini tekrar tekrar çağıran bir işlev).
Diğer tarayıcılar ya daha büyük yığınlara sahiptir (bu nedenle bunun yerine bir zaman aşımı alırsınız) ya da bir nedenden dolayı hatayı yutarlar (belki de kötü yerleştirilmiş bir try-catch).
Hata oluştuğunda çağrı yığınını kontrol etmek için hata ayıklayıcıyı kullanın.