اذهب إلى المحتوى
  • 0

generator function* in javascript

منتصر احمد

السؤال

Recommended Posts

  • 0

Generator functions هي وظيفة في JavaScript تسمح بإنشاء Iterator (محدد) لتكرار قيم من خلالها. عند استدعاء ال generator function ، يتم إنشاء Object (المحدد) الذي يمكن استخدامه لاسترداد القيم المتعاقبة عن طريق استدعاء next() مرارًا وتكرارًا.

فائدة ال generator function في JavaScript هي أنها تسمح بتوليد سلسلة من القيم أو النتائج المحسوبة بشكل ديناميكي عبر فترات زمنية مختلفة. بالإضافة إلى ذلك، يمكن استخدام generator functions في العديد من الأسيناريوهات مثل:

  1. إنتاج قيم لا نهائية ودورانها عبر دورات متعددة.
  2. توليد سلاسل محسوبة بشكل ديناميكي للقيام بأنواع مختلفة من المعالجات.
  3. التعامل مع البيانات المحدودة المتاحة بشكل فعال دون الحاجة إلى تحميل كامل البيانات في الذاكرة.

وتتميز ال generator functions بأنها تتميز بالقدرة على التعامل مع التأجيل الذي يحدث عند إجراء عمليات معقدة والتي يمكن أن تتطلب وقتًا طويلاً للإنتهاء. باستخدام generator functions يمكن للمطور تجنب حدوث تأخير في البرنامج وتحسين أداءه.

مثال على استخدام generator function يمكن أن يكون عند إنشاء مولد (generator) لتوليد أرقام عشوائية. على سبيل المثال:

function* randomNumbersGenerator() {
  while(true) {
    yield Math.floor(Math.random() * 100);
  }
}

const numbers = randomNumbersGenerator();

console.log(numbers.next().value); // 37
console.log(numbers.next().value); // 81
console.log(numbers.next().value); // 14

في الكود السابق تم إنشاء generator function باسم randomNumbersGenerator، والذي يقوم بإنشاء أرقام عشوائية عند استدعاء next() مرارًا وتكرارًا. ويتم تخزين المولد في متغير numbers، ثم يمكن استخدام next() للحصول على قيم مختلفة من المولد.

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

استخدام generator functions في تطوير المواقع والتطبيقات

  1. توليد القوائم اللانهائية: يمكن استخدام generator functions لتوليد البيانات التي تحتاجها لعرض القوائم اللانهائية، مثل القوائم المتداخلة والقوائم العمودية. عندما يطلب المستخدم المزيد من العناصر، يتم توليد المزيد من العناصر باستخدام generator function.
  2. تحميل البيانات الكبيرة بشكل فعال: يمكن استخدام generator functions لتحميل البيانات الكبيرة بشكل فعال، حيث يمكن استخدام generator functions لتحميل كميات كبيرة من البيانات بشكل تدريجي، بدلاً من تحميلها جميعًا في ذاكرة الوصول العشوائي (RAM) في وقت واحد. وبالتالي تمنع generator functions تعليق التطبيقات عند تحميل البيانات الكبيرة.
  3. التحكم في سير التنفيذ: يمكن استخدام generator functions للتحكم في سير التنفيذ، حيث يمكن للمبرمج استخدام yield لإيقاف التنفيذ في أي وقت يريد، وبعد ذلك يمكن استئناف التنفيذ مرة أخرى بعد بعض الإجراءات المحددة.
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

Generator functions هي وظيفة JavaScript خاصة تمكنك من إنشاء Iterator للحصول على مجموعة من القيم بطريقة فعالة من حيث استهلاك الموارد.

عند استدعاء generator function باستخدام myFunction() ، يتم إرجاع Iterator Object. يمكن استخدامه لاسترداد القيم من generator function. عندما يتم استدعاء الدالة المولدة، لا يتم تنفيذ الكود بالكامل، بل يتم إرجاع iterator object فقط.

وبمجرد استخدام next() على الكائن المولد، يتم تنفيذ الكود الخاص بالمولد بدءًا من بداية المكان الذي توقف عنده الكائن المولد السابق. و يستطيع المولد إرجاع القيم بينما لا يتوقف عن العمل.

إليك بعض الفوائد الرئيسية لاستخدام generator functions في JavaScript:

تقليل استهلاك الموارد والوقت بدلاً من إنشاء مصفوفة كبيرة من القيم وتحميلها في الذاكرة.

يمكن استخدامها لإنتاج مجموعات لا نهائية من القيم مثل التواليات الرياضية والأرقام العشوائية.

يمكن استخدامها لتوليد البيانات بطريقة متزامنة، وهذا مفيد عندما يحتاج التطبيق إلى تنفيذ مهمة معينة وفي نفس الوقت يقوم بالاستمرار في العمل.

على سبيل المثال، يمكن استخدام generator function لإنشاء Iterator للحصول على مجموعة من الأرقام العشوائية، كما يلي:

function* randomNumbers() {
  while (true) {
    yield Math.random();
  }
}

const iterator = randomNumbers();
console.log(iterator.next().value); // يمكن تنفيذ هذا السطر مرارًا وتكرارًا للحصول على الأرقام العشوائية.

هذا المثال ينتج مجموعة لا نهائية من الأرقام العشوائية ويستخدم while loop و yield للعودة بشكل مستمر إلى القيم المولدة. 

كما يمكن استخدام generator function لإنتاج تواليات معينة، مثل التواليات الرياضية، كما يلي:

function* fibonacciSequence() {
  let current = 0;
  let next = 1;
  while (true) {
    yield current;
    [current, next] = [next, current + next];
  }
}

const iterator = fibonacciSequence();
console.log(iterator.next().value); // 0
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3
// يمكن تنفيذ هذه الأوامر مرارًا وتكرارًا للحصول على تواليات fibonacci

هذا المثال ينتج تواليات fibonacci باستخدام while loop و yield لإرجاع القيم المولدة.

باستخدام generator function يمكن إنشاء Iterator للحصول على مجموعة من البيانات بطريقة متزامنة، وذلك عن طريق استخدام الكلمة الرئيسية yield للتوقف في أي نقطة من الدالة. يمكن استخدام هذه الخاصية في العمل مع API الويب التي تتطلب تحميل بيانات كبيرة، وفي هذه الحالة يتم تحميل البيانات بشكل متزامن.

باستخدام generator function يمكن تحسين أداء التطبيقات، وتحسين كفاءة استخدام الذاكرة. يمكن استخدامها لإنتاج مجموعات لا نهائية من البيانات وتعزيز الكفاءة في تنفيذ المهام.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...