6

o başka bir istek gönderebilir ve sonsuza tekrarlayın yanıt verdiğinde ben sunucuya asenkron AJAX isteği göndermek istiyor ve varsayalım:Sonsuz döngü

function sendXHR(url, callback) { 
    // Send XMLHttpRequest to server and call callback when response is received 
} 

function infinite() { 
    sendXHR('url/path', infinite); 
} 

infinite(); 

Biz dışarı aday olacağını burada varsayalım yığın alanı oldukça hızlı, yani bunu nasıl yapabilirim (engellemeden)?

return kullanmak yerine geri aramaları iletme biçimi özellikle node.js ile popülerdir. İnsanlar sonsuz döngüleri nasıl yaratır? Çoğu JS motorunun herhangi bir kuyruk arama optimizasyonu yaptığını sanmıyorum.

+2

tükendi dusmedigi geri çağrı, yığının altındaki yığın kareleri olarak adlandırıldığı zamanki boşluk, önceki 'sonsuz' çağrının yığınını içermez. –

+0

@DanD. sendXHR' 'in' ve etrafta 9500 tekrardan sonra 'Maksimum çağrı yığını boyutu exceeded' bildirir; ben' geri arama() ekleyerek Chrome'da denedim. Firefox ayrıca çok fazla özyineleme diyor. – Flash

+0

O zaman belki de ilginç bir şey var * sunucuya XMLHttpRequest gönderin ve tepki * parçasını alındığında geri arama diyoruz. –

cevap

9

sizin ajax çağrı asenkron ise ajax isteği gönderilir sendXHR() döner hemen sonra, çünkü yığın alanı yetersiz çalışmaz. Geri arama daha sonra ajax yanıt geldiğinde bir süre sonra çağrılır. Yığın birikmesi yok.


sizin ajax çağrısı senkron ve diğer etkinliklerle ne o zaman bu kadar böyle bir şey olabilir, javascript ortamda gerçekleşmesi değil izin vermek istiyorsanız:

function sendXHR(url, callback) { 
    // Send XMLHttpRequest to server and call callback when response is received 
} 

function infinite() { 
    sendXHR('url/path'); 
    setTimeout(infinite, 1); 
} 

infinite(); 
+0

Söz konusu açıklama o gerçekten yığın alanı tükendi olmadığını kanıtlamak gibi görünüyor, bu yüzden senkron xhr şarkı var gibi görünüyor. –

+0

@SeanKinsey - OP zaman uyumsuz vs senkronize hakkında net değildi çünkü, şimdi her ikisi için yanıtlarını ekledik. – jfriend00

+0

sayesinde, o zaman uyumsuz ise kurmak hiçbir yığın yoktur .. Sağ elbette. – Flash

İlgili konular