ما هو رد الاتصال
نسخة الكود كما يلي:
وظيفة رد الاتصال هي وظيفة تسمى من خلال مؤشر الوظيفة. إذا قمت بتمرير المؤشر (العنوان) للوظيفة كوسيطة لوظيفة أخرى ، عند استخدام هذا المؤشر لاستدعاء الوظيفة التي يشير إليها ، نقول إن هذه وظيفة رد اتصال. لا يتم استدعاء وظيفة رد الاتصال مباشرة من قبل تطبيق الوظيفة ، ولكن يطلق عليها طرف آخر عند حدوث حدث أو شرط معين ، ويستخدم للرد على الحدث أو الحالة.
يبدو هذا التفسير معقدًا ، لذلك وجدت تفسيرًا أفضل على Zhihu
نسخة الكود كما يلي:
تذهب إلى متجر لشراء الأشياء ، والأشياء التي تريدها ليست في المخزون ، لذلك تترك رقم هاتفك مع الكاتب. بعد بضعة أيام ، يحتوي المتجر على سلع ، وسيتصل بك الكاتب ، ثم تذهب إلى المتجر لالتقاط البضائع بعد تلقي المكالمة. في هذا المثال ، يسمى رقم هاتفك وظيفة رد الاتصال ، وتترك الهاتف إلى الكاتب ، الذي يسمى وظيفة رد الاتصال. يحتوي المتجر في وقت لاحق على الأسهم ، والتي تسمى الحدث الذي يؤدي إلى جمعية رد الاتصال. يتصل بك الكاتب ، والذي يسمى وظيفة رد الاتصال ، وعندما تذهب إلى المتجر لالتقاط البضائع ، يطلق عليه حدث رد الاتصال على الاستجابة. تم الانتهاء من الجواب.
في JavaScript:
نسخة الكود كما يلي:
يتم تمرير الوظيفة A كوسيطة (مرجع الوظيفة) في وظيفة أخرى B ، وتنفيذ هذه الوظيفة B الوظيفة A. دعنا نقول أن الوظيفة A تسمى وظيفة رد الاتصال. إذا لم يكن هناك اسم (تعبير وظيفة) ، يطلق عليه وظيفة رد الاتصال المجهول.
في الواقع ، فهذا يعني تمرير الوظيفة كمعلمة.
رد الاتصال Javscript
رمي جميع التفسيرات المعقدة أعلاه في سلة المهملات يمكن أن ترى ما هو رد الاتصال
ما هو رد الاتصال
في jQuery ، ربما تكون طريقة الاختباء مثل هذا
نسخة الكود كما يلي:
$ (محدد) .يد (السرعة ، رد الاتصال)
عند استخدامه ،
نسخة الكود كما يلي:
$ ('#element'). Hide (1000 ، function () {
// وظيفة رد الاتصال
}) ؛
نحن فقط بحاجة إلى كتابة وظيفة بسيطة في الداخل
نسخة الكود كما يلي:
$ ('#element'). Hide (1000 ، function () {
console.log ('Hide') ؛
}) ؛
هناك تعليق صغير في هذا: يتم تنفيذ وظيفة رد الاتصال بعد الانتهاء من الرسوم المتحركة الحالية بنسبة 100 ٪. ثم يمكننا رؤية الظاهرة الحقيقية. عندما يتم إخفاء العنصر مع عنصر المعرف ، سيتم إخراج الاختباء في وحدة التحكم.
هذا يعني:
إن رد الاتصال هو في الواقع ، عند تنفيذ وظيفة ، فإن الوظيفة التي يتم تنفيذها الآن هي ما يسمى بوظيفة رد الاتصال.
وظيفة رد الاتصال
في ظل الظروف العادية ، يتم تنفيذ الوظائف بالترتيب ، لكن JavaScript هي لغة تعتمد على الحدث.
نسخة الكود كما يلي:
وظيفة مرحبا () {
console.log ('hello') ؛
}
وظيفة العالم () {
console.log ('World') ؛
}
مرحبًا()؛
عالم()؛
لذلك ، في ظل الظروف العادية ، سيتم تنفيذها بالتسلسل ، ولكن عندما يتم تنفيذ الحدث العالمي لفترة طويلة.
نسخة الكود كما يلي:
وظيفة مرحبا () {
setTimeout (function () {
console.log ('hello') ؛
} ، 1000) ؛
}
وظيفة العالم () {
console.log ('World') ؛
}
مرحبًا()؛
عالم()؛
ثم هذا ليس هو الحال في هذا الوقت. في هذا الوقت ، سيتم إخراج العالم وسيتم إخراج Hello ، لذلك نحتاج إلى رد الاتصال.
مثيل رد الاتصال
مثال بسيط هو كما يلي
نسخة الكود كما يلي:
وظيفة add_callback (p1 ، p2 ، رد الاتصال) {
var my_number = p1 + p2 ؛
رد الاتصال (my_number) ؛
}
add_callback (5 ، 15 ، function (num) {
console.log ("call" + num) ؛
}) ؛
في المثال ، لدينا وظيفة من Add_Callback التي تتلقى ثلاث معلمات: الأولان هما معلمتان تتم إضافتهما ، والثالث هو وظيفة رد الاتصال. عند تنفيذ الوظيفة ، يتم إرجاع نتيجة الإضافة وإخراج "Call 20" في وحدة التحكم.