"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني إنشاء حلقات غير متزامنة في جافا سكريبت؟

كيف يمكنني إنشاء حلقات غير متزامنة في جافا سكريبت؟

تم النشر بتاريخ 2024-11-03
تصفح:550

How Can I Create Asynchronous Loops in JavaScript?

الحلقات غير المتزامنة في JavaScript

بينما توفر JavaScript أنواعًا مختلفة من الحلقات، يمكن إنشاء حلقة توقف التنفيذ مؤقتًا لانتظار مكالمة غير متزامنة. صعبة. وذلك لأن خلط التعليمات البرمجية المتزامنة وغير المتزامنة يمكن أن يؤدي إلى سلوك غير متوقع.

الحل: تبني النهج غير المتزامن

للتغلب على هذا القيد، من الضروري احتضان الحدث بالكامل نهج يحركه جافا سكريبت. يتضمن ذلك استخدام وظيفة سيتم استدعاؤها عند اكتمال المكالمة غير المتزامنة. يمكن للحلقة بعد ذلك مواصلة التنفيذ بعد استدعاء رد الاتصال.

تقديم وظيفة asyncLoop

يمكن إنشاء وظيفة مساعدة تسمى asyncLoop لتسهيل سلوك الحلقات غير المتزامن هذا. يستغرق الأمر ثلاث معلمات:

التكرارات: عدد المرات التي يجب تشغيل الحلقة فيها.
  • func: الوظيفة التي سيتم تنفيذها في كل تكرار.
  • رد الاتصال: الدالة التي سيتم استدعاؤها عند اكتمال الحلقة.
  • تحتفظ وظيفة asyncLoop بفهرس متغير داخلي لتتبع التكرار الحالي ووضع علامة على متغير تم تنفيذه للإشارة إلى وقت اكتمال الحلقة. يوجد داخل الوظيفة كائن حلقة داخلية يوفر الطرق التالية:

next(): تقدم الحلقة بتكرار واحد.
  • iteration(): إرجاع التكرار الحالي.
  • break(): ينهي الحلقة مبكرًا.
  • لبدء الحلقة، يتم استدعاء Loop.next(). في كل مرة يتم فيها استدعاء الدالة func، يمكنها استدعاء ()loop.next لمواصلة الحلقة أو ()loop.break لإنهائها.

مثال للاستخدام:

يوضح المثال التالي كيفية استخدام الدالة asyncLoop لإنشاء حلقة غير متزامنة:

asyncLoop(10, (loop) => { someFunction(1, 2, (النتيجة) => { console.log(loop.iteration()); حلقة.next(); }); }, () => { console.log("انتهت الدورة"); });
asyncLoop(10, (loop) => {
  someFunction(1, 2, (result) => {
    console.log(loop.iteration());
    loop.next();
  });
}, () => {
  console.log('cycle ended');
});

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

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3