[flex] استدعاء وظيفة غير متزامن في فليكس


Answers

أبسط الجواب هو استخدام روتين callLater - انظر بعض الوثائق هنا .

callLater( parseFile, [filename] );

...

public function parseFile( filename : String ) : void
{
    // parse the file
}

نهج آخر هو استخدام استدعاء flash.utils ، المعرفة في حزمة flash.utils . هذا واحد يتيح لك استدعاء روتين بعد مرور فترة محددة من الزمن. باستخدام هذا الروتين، يمكنك إعداد الدالة parseFile لاستدعاء نفسه مرارا وتكرارا، مما يتيح لك فترات منتظمة كنت تبحث عن:

parseFile( filename );

...

public function parseFile( filename : String ) : void
{
    // parse the file

    // call this function again in 5 seconds
    setTimeout( parseFile, 5000, filename );
}
Question

هل من الممكن استدعاء وظيفة بشكل غير متزامن في فليكس؟ أريد أن تحليل ملف على فترات منتظمة دون عرقلة بقية التطبيق، ما هو النهج الموصى بها لهذا؟




يتم إيقاف كل من سيتيموت و سيتينتيرفال.

فئة الموقت لا يسمح فقط تأخير، ولكن أيضا ريبتكونت: كم مرة سوف رمي الحدث تيمر والبدء العد التنازلي مرة أخرى. من المفترض أن واحد من شأنه أن استدعاء myTimer.stop () داخل الحدث قبل القيام بكل ما تريد القيام به، و myTimer.start () عندما تم القيام به.

private function newLinesToParse() : void
{
    myTimer = new Timer(30000, 9999);
    myTimer.addEventListener(Timer.TIMER, myTimerTick);
    myTimer.start(); 
}

private function myTimerTick(event : Event) : void
{
    myTimer.stop();    // or (event.currentTarget as Timer).stop();

    // do a few lines

    if (anyMoreLines)  
        myTimer.start();
    else
        myTimer = null;
}

في صحتك




ما تحتاجه هو مفهوم يسمى الخيوط الخضراء . هناك ليب الأخضر خيوط هناك، ولكن أنا لم تستخدمه.

تنفيذ فعلت لعملية الاستيراد (1-5 دقائق) في الواقع تعقب كم من الوقت تنفيذ عمليات الإعدام والسماح لفترة شكلي من الوقت لكل دورة. هذا يسمح لك لاختيار عدد الإطارات التي أسقطت (كنا ببساطة تحديث شريط التقدم مشروط). أنا أيضا تصنيفها الفرعي مع النسخة التي ركض من خلال إيكولكتيونفيو مع إيفيكورسور وأطلقت قبالة الحدث مع كل بند.

لا أستطيع توريد شفرة المصدر بسبب انها اتصال مع المنتج التجاري، ولكن مفهوم بسيط جدا لتنفيذ.




Related