Domanda

Sto lavorando con una grande risposta XML da un servizio web. Quando provo a ottenerlo utilizzando un URL, dopo qualche tempo viene visualizzato un errore in Firebug che "quota dello spazio dello stack dello script è esaurita" Come posso risolverlo?

È stato utile?

Soluzione

Sembra come se ci fosse qualche ricorsione in corso durante l'elaborazione dell'xml, che essenzialmente sta causando un overflow dello stack (con qualsiasi nome).

Pensieri:

  • lavora con meno dati
  • se stai elaborando i dati manualmente, prova a usare meno ricorsione? forse manuale tail-call o basato su coda / stack
  • considera json - quindi puoi scaricare l'host di script per reidratare l'oggetto senza ulteriore elaborazione

Altri suggerimenti

Hai provato a disabilitare Firebug?

A partire da Firefox 3, lo spazio dello stack disponibile è passato da 4 MB a ~ = 640 KB (sto passando il passaparola qui).

Ti capita di eseguire FF3?

https://bugzilla.mozilla.org/show_bug.cgi?id=420874

Ho avuto un problema simile, forse lo stesso. Questo può succedere se provi ad analizzare un grosso pezzo di html con jQuery $ (html).

Nei miei test questo è successo solo su Firefox 3.6.16 su Windows. Firefox 4.0.1 su Ubuntu si è comportato molto meglio. Probabilmente nulla a che fare con il sistema operativo, solo il motore di script in 4.x è molto meglio ..

Soluzione: Invece di

var $divRoot = $(html);

L'ho fatto

var $temp = $('<div style="display:none;">');  // .appendTo($('body'));  // (*)
$temp.html(html);  // using the client's html parsing
var $divRoot = $('> div', $temp);  // or .children() or whatever
// $temp.remove();  // (*)

(*) Ricordo che in alcuni casi è necessario aggiungere il nodo temporaneo al corpo, prima che jquery possa applicare qualsiasi selettore. Tuttavia, in questo caso sembrava funzionare bene senza quello.

Non c'era assolutamente alcuna differenza su FF 4.x, ma consentiva di evitare l'errore di overflow dello spazio dello stack su FF 3.x.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top