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

السؤال

Recommended Posts

  • 0
نشر

يكون هذا بناءً على طريقة تعريفها واستخدامها في الكود. ففي المثال الذي أعطيته، تستخدم الدالة المسماة () => {...} كوظيفة callback .. الحاسوب يتعرف على ذلك من خلال قواعد اللغة والتوقعات المتعلقة بطريقة استخدام الدوال، وإلا كيف يتعرف على المتغيرات والدوال وغيرها.

فعند تنفيذ الكود، عندما يتم استدعاء app.listen(port, () => {...})، يتم تمرير الدالة المعبرة بواسطة () => {...} كوظيفة callback إلى app.listen. هذا يسمح بتنفيذ الكود الذي يحتوي على console.log عندما يتم استدعاء الوظيفة callback في نقطة معينة من عملية الاستماع للاتصالات على البوابة port.

وببساطة، الحاسوب يعرف أن الدالة هي callback function من خلال طريقة استخدامها في الكود والقواعد المحددة في لغة جافاسكربت. هكذا هو عمل جافاسكربت.

  • 0
نشر

عندما قام مطورو الوظيفة listen ببنائها قاموا بدمج هذه الـ callback معها مثل :

const listen  = (port , callback ) =>{
  // ...   الكود الخاص بالوظيفة
  const result = "نتيجة الوظيفة"
  if(callback) callback(result) // نستدعي الوظيفة التي يتم تمريرها
}

ولاستخدامها :

listen(3000 , (data) => {
  console.log(data)// نتيجة الوظيفة
})

قد يفيدك الاطلاع على المقالة التالية للتعمق في فهم الشيفرات المتزامنة و غير المتزامنة :

 

 

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Bandar Abuseada:

لازلت لم افهم callback 

في JavaScript، تستخدم مصطلح "callback function" للإشارة إلى دالة تم تمريرها كمعامل (argument) لدالة أخرى، والتي يتم استدعاؤها عندما تنتهي الدالة الأصلية من العملية التي تقوم بها. 

في المثال الذي أعطيته، تم تمرير دالة مجهولة (anonymous function) كمعامل لدالة `app.listen()`، وهذه الدالة تتم استدعاؤها عندما يتم بدء استماع التطبيق على المنفذ المحدد.

الحاسوب يعرف أن الدالة الممررة هي callback function من خلال نوع البيانات الممررة للدالة الأصلية. في هذه الحالة، يتم تمرير دالة كمعامل لدالة `app.listen()`، والتي يتم تحديدها بواسطة الفاصلة قبل القوس الإغلاقي. تعمل هذه الدالة كمعامل للدالة الأصلية، وتتم استدعاؤها في وقت لاحق عند الحاجة إليها.

بالإضافة إلى ذلك، يمكن تمرير الدوال العادية (non-anonymous functions) كمعاملات callback function بنفس الطريقة التي تم تمرير الدالة المجهولة في المثال السابق. يتم فقط تمرير اسم الدالة بدلاً من الدالة المجهولة. على سبيل المثال:

function greeting(name) {
  console.log(`Hello, ${name}!`);
}

function processUserInput(callback) {
  var name = "John";
  callback(name);
}

processUserInput(greeting);

في هذا المثال، تم تمرير دالة `greeting()` كمعامل callback function للدالة `processUserInput()`، والتي يتم استدعاؤها عندما يتم اكتمال عملية الإدخال المستخدم.

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Bandar Abuseada:

لازلت لم افهم callback 

اخي callback  هيا عبارة عن وظيفة ثانوية تمررها أنت للوظيفة الرئيسية حتى تقوم بتنفيذها بعد الانتهاء من عمليها، رجاءً اطلع على المثال الذي كتبته لك واطلع على المقال وستتضح لك الصورة.

  • 0
نشر

الcompiler يعرف كل شيء يتعلق باللغة البرمجية التي يعمل عليها. أي أنه يميز أن موضع ما في دالة ما في سطر معين يحتوي على callback function بنفس الطريقة التي يميز بها أنواع البيانات data types و طريقة الكتابة syntax وغيرها من خصائص اللغات البرمجية وكل هذا موجود من خلال تعليمات مسبقة ومحددة بدقة.

أما طريقة عملها فالأمر ببساطة في مثالك الذي وضعته في السؤال أن الخادم ينتظر حصول الإتصال بالمنفذ port وفور نشوء الاتصال تقوم الدالة listen بإستدعاء الcallback وتنفذ مضمونها والذي هو في هذه الحالة طباعة رسالة الى console.

  • 0
نشر

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

والأمر يتم من خلال المترجم (Compiler) أو محرك JavaScript وهو لا يتعرف بشكل مباشر على الدالة الممررة كـ callback function، لكنه يعتمد تحديد الدالة كـ callback function على كيفية استخدامها في سياق معين في الكود.

ويوجد مفهوم الـ callback queue (طابور الاستدعاءات) والذي يتعلق بنظام المحدثات (event loop) في محرك JavaScript، وهو جزء من عمل المحرك نفسه.

callback-function-in-javascript.thumb.jpg.0731063c3e421694323fad96726edcd5.jpg

وعند تمرير دالة callback إلى دالة معينة، مثلما هو الحال في مثالك app.listen، يتم تسجيل تلك الدالة في callback queue، والcallback queue هو عبارة عن هيكل بيانات يحتوي على مجموعة من الدوال الممررة كـ callbacks، وتكون تلك الدوال جاهزة للاستدعاء عند حدوث حدث معين.

وسأوضح الأمر على المثال الذي طرحته:

تُستخدم دالة callback في دالة app.listen، وتعمل على استماع التطبيق على منفذ محدد (port) للطلبات الواردة من المتصفح، وتحتوي على معاملين، الأول هو رقم المنفذ (port) الذي ترغب في استخدامه، والثاني هو الدالة callback التي ستتم استدعاؤها عندما يكون التطبيق جاهزًا للاستماع وتلقي الطلبات.

وتمرر  دالة callback بواسطة السهم البسيط () => {} بعد معامل المنفذ (port)، ويتم تنفيذ تلك الدالة callback عندما يبدأ التطبيق في الاستماع على المنفذ المحدد، أي يتم رسالة في وحدة التحكم تقول "Example app listening on port" تليها قيمة المنفذ الذي تم تمريره.

بمعنى آخر، عند تشغيل التطبيق ويب، سيبدأ في الاستماع على المنفذ المحدد، وعندما يكون جاهزًا، ستستدعى الدالة callback المحددة وطباعة رسالة توضح أن التطبيق جاهز للاستخدام على المنفذ المحدد.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...