Supponiamo che io voglio inviare una richiesta AJAX asincrona al server, e quando risponde inviare un'altra richiesta e ripetere sempre:ciclo infinito con il modello callback asincroni in javascript
function sendXHR(url, callback) {
// Send XMLHttpRequest to server and call callback when response is received
}
function infinite() {
sendXHR('url/path', infinite);
}
infinite();
presumo qui ci sarebbe a corto di impilare lo spazio abbastanza rapidamente, quindi come posso fare questo (senza bloccare)?
Il pattern di richiamare le richiamate anziché utilizzare return
è particolarmente popolare con node.js
. Come fanno le persone a creare loop infiniti? Non credo che la maggior parte dei motori JS facciano alcun tipo di ottimizzazione delle chiamate tail.
che non sarebbero a corto di impilare lo spazio come quando viene chiamato il callback, i frame dello stack sottostanti non contengono lo stack della precedente chiamata 'infinita'. –
@DanD. L'ho provato in Chrome aggiungendo 'callback();' in 'sendXHR', e riporta 'Maximum stack stack size exceeded' dopo circa 9500 iterazioni. Firefox dice anche "troppa ricorsione". – Flash
Bene, allora forse c'è qualcosa di interessante nel * Invia XMLHttpRequest al server e richiamare quando la risposta viene ricevuta * parte. –