سؤال

أنا أعمل مع استجابة XML كبيرة من خدمة ويب.عندما أحاول الحصول على هذا باستخدام عنوان URL ، بعد مرور بعض الوقت ، يعرض خطأ في Firebug أن "حصة مكدس Script Stack قد استنفدت" كيف يمكنني حل ذلك؟

هل كانت مفيدة؟

المحلول

هو - هي اصوات كما لو أن هناك بعض التكرار يحدث عند معالجة ملف XML، والذي يتسبب بشكل أساسي في تجاوز سعة المكدس (بأي اسم).

أفكار:

  • العمل ببيانات أقل
  • إذا كنت تقوم بمعالجة البيانات يدويًا، فهل تحاول استخدام تكرار أقل؟ربما يكون الاتصال اليدوي أو قائمة الانتظار/المكدس قائمًا
  • ضع في اعتبارك json - ثم يمكنك إلغاء التحميل على مضيف البرنامج النصي لإعادة ترطيب الكائن دون أي معالجة إضافية

نصائح أخرى

هل حاولت تعطيل الحرائق؟

واعتبارا من فايرفوكس 3، انخفض مساحة مكدس المتاحة من 4MB إلى ~ = 640KB (أنا يمر على كلمة من فم هنا).

هل يحدث أن تكون قيد التشغيل FF3؟

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

وكان لي مشكلة مماثلة، وربما نفسه. يمكن أن يحدث هذا إذا حاولت تحليل جزء كبير من أتش تي أم أل مع مسج $ (HTML).

في بلدي التجارب هذا حدث فقط على فايرفوكس 3.6.16 على ويندوز. فايرفوكس 4.0.1 على أوبونتو تصرف أفضل بكثير. ربما لا علاقة لها نظام التشغيل، فقط مشغل البرنامج النصي في 4.x هو أفضل بكثير ..

والحل: بدلا من

var $divRoot = $(html);

وفعلت

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();  // (*)

و(*) وأذكر أنه في بعض الحالات تحتاج إلى إضافة عقدة درجة الحرارة للجسم، قبل مسج يمكن تطبيق أي محددات. ومع ذلك، في هذه الحالة يبدو أن تعمل على ما يرام دون ذلك.

وكان هناك اي اختلاف على 4.x من FF، لكنها لم تسمح لتجنب الخطأ تجاوز مساحة مكدس على FF 3.X.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top