Transcript for:
مفهوم توابع Callback در برنامه‌نویسی

سلام عزیزای دلم با یه جلسه دیگه در خدمتتون هستم توی این قسمت میخوام در مورد موضوع کالبک فانکشن واسه تون صحبت بکنم دقیق بکنین که اصلا نمیخوام در مورد کاربوردهای کالبک فانکشن صحبت بکنم فقط میخوام مفهومش رو واسه تون بررسی بکنم بعدن توی یک فصل جداغونهی خیلی مفصل تر به این موضوع کالبک فانکشن میپردازم واسه تون و اونجا دقیقا یاد می گیرید که کاربورد کالبک فانکشن کجا هستش اما اینجا فقط می خواهیم مفهومش رو درک بکنیم که بعدا توی فصل جداغونهی که بررسیش می کنیم بدونید کالبک فانکشن چیه خب بچه ها توی قسمت 80 من یک مثال زدم یک تابعی به اسم رینج پرائم رو واسطون پیاده سازی کردم و اونجا درون تابع رینج پرائم ما یک تابع دیگه به اسم ایز پرائم رو صدا زدیم و متوجه شدیم که میتونیم ما توابه رو داخل همدیگه صدا بزنیم یعنی یک تابه تعریف کنیم داخل یک تابه دیگه ازش استفاده بکنیم خب این موضوع یه بار دیگه با یه مثال خیلی ساده میخوام واسه تون توضیح بدم ببینید اینجا من امدم دوتا تابه تعریف کردم یکی به اسم First Function یکی به اسم Second Function تابه First Function یه دستور خیلی ساده داره که رشته یه First Function رو توی کنسول نمایش میده تاب second function هم دوباره یه دستور خیلی ساده داره که رشته یه second function رو توی کنسول نمایش میده خب اینها رو میتونیم جدا جدا صدا بزنیم یعنی من اینجا بیام تاب first function رو صدا بزنم و برنامه رو اجرا بکنم خب قطعا این دستوری که داخل تاب first function هست یعنی کنسول lock اجرا میشه و first function رو داخل کنسول چاب میکنه تاب second function رو هم میتونیم به همین شکل صدا بزنیم و موسیقی دستور داخلش که چاپ پرشته یه second function هست اجرا میشه و ببینید اینجا second function اجرا میشه خب حالا ما میتونیم مثلا تابه first function رو صدا بزنیم و تابه second function هم اجرا بشه چطوری ببینید من اینجا که توی خط 11 اومدم تابه second function رو صدا زدم اینو از اینجا برش میدارم و میبرمش داخل تابه first function حالا اگر من بیام اینجا توی خط 8 تابه first function رو صدا بزنم برنامه از اینجا میپره به خط ثوم یعنی تابه first function شروع به اجرا شدن میکنه خب دستور اولش که اینه console.log first function رشته یه first function داخل کنسول نمایش داده میشه دستور بعدیش خودش یک تابه دیگه است یعنی توی خط پنج داخل تابه first function ما اومدیم یک تابه دیگه رو صدا زدیم خب از اینجا برنامه میپره به اینجا و دستور داخل تابه second function رو اجرا می کنه که console.log second function هست یعنی الان اگر من برنامه رو اجرا بکنم بازم همون نتیجه رو داریم و فقط این کار رو با یک فراخانی انجام دادیم در از تابه second function خودش داخل تابه first function صدا زده شده پس دارید می بینید که می تونیم یک تابه رو داخل یک تابه دیگه صدا بزنه خب حال مفهوم callback function هم یه چیزی تو همین مایه هاست ما میتونیم یک تابع رو به عنوان آرگمان ورودی پاس بدیم به یک تابع دیگه خب ببینید بچه ها من میتونم واسه یه تابع فرست فانکشن مثلا بیام یه سری پارامتر ورودی مشخص بکنم مثلا A الان یه دونه پارامتر ورودی داره به اسم A حالا اگه بخوام بیش از یک پارامتر مشخص بکنم با استفاده از کاما جداشو میکنم الان دوتا پارامتر ورودی داره خب من میم اینجا یک پارامتری رو تعریف میکنم به اسم کالبک اسم دلخواهه اصلا لزومی نداره که اینجا بنویسید callback ولی چون موضوع من callback functionه معمولا وقتی میخواییم از callback function استفاده بکنیم اسم این پارامت رو هم منویسن callback ولی شما میتونید هر اسم دلخواه دیگه ای رو بنویسید و اینجا میام منویسم callback خب به این صورت خب حالا اینجا رو با دقیقه خیلی زیاد گوش بدین توی قطعه هشتم که من دارم تابه first function رو صدا میزنم میتونم اینجا به عنوان آرگومان ورودی یک تابه رو بهش پاس بدم تا الان ما توابه رو که تعریف میکردیم به عنوان آرگومان مثلا عدد میدادیم رشته میدادیم مقدار بولیم میدادیم ولی هیچ موقع از تابه استفاده نکرده بودیم ببینید من میام اینجا تابه second function رو به عنوان آرگومان میدم به این تابه دقیق کنید لازم نیست بعدش علامت پرانتز باز بستر رو بذارید فقط اسم تابع رو میذارید به عنوان آرگومان ورودی این تابع خب حالا دقیقا چه اتفاق میافته ببینید ما داریم تابع first function رو صدا میزنیم و تابع second function رو به عنوان آرگومان دادم به این تابه خب این second function میاد به جای این callback قرار میگیره خب دقیقا این second function میاد به جای این callback قرار میگیره و به جای این callback توی خط پنج هم قرار میگیره شد همون چیزی که همین دو دقیقه پیش توضیح دادم یعنی تابه second function رو داخل تابه first function سداش زدم اوکی؟ این رو برگردونم به حالت قبل یعنی callback callback برنامه رو من اجرام بکنم ببینید برنامه رو اجرام میکنم بازم همین نتیجه رو داریم یه بار سریع توضیح بدم چه اتفاقی میفته ما تابه first function رو سدا زدیم و به عنوان argument یک تابه رو مشخص کردیم تابه second function رو به عنوان argument مشخص کردیم این second function میاد به جای این callback اینجا قرار میگیره دستور داخل خط چار اجرامشه یعنی console.log first function این رشته first function چاب میشه بعد میرسیم به این callback این callback چی بود؟ تابه second function بود تابه second function اجرام میشه و اینجا این دستور داخلش اجرام میشه و رشته second function هم چاب میشه شاید یه مقداری فهم این موضوع سخت باشه یه مقداری چیز عجیب غریب باشه واسه تون ولی اصلا جای نگران نیست بچه ها تنها چیزی که الان توی این قسمت باید یاد بگیرید و چیزی که باید از این جلسه دریافت بکنید اینه که ما میتونیم به عنوان آرگومان ورودی وقتی داریم یک تابع رو فراخانی میکنیم صداش میزنیم میتونیم به عنوان آرگومان یک تابع دیگر رو مشخص بکنیم و به این حالت میگیم callback function یعنی اگه ما به عنوان آرگومان ورودی یک تابع دیگر رو مشخص بکنیم بهش میگیم callback function به همین سادگی حالا این که این دقیقا کاربوردش کجاست گفتم توی یک فصلی مجزا در موردش توضیح میدم واسه تون توی فصلی که قراره در مورد برنامه نویسی سنگرون یا همزمان و برنامه نویسی غیر همزمان یا آسنگرون صحبت بکنیم اونجا مفصل با این کالبک فانکشن ها آشنا میشید و کاربوردشون رو توی عمل متوجه میشید آمیدوارم این قسمت هم مورد توجهتون قرار گرفته باشه یه نکته رو هم اضافه بکنم بچه ها شاید تا اینجا یه دوره یه مقداری شما مطالب واسطون خست کننده بوده باشه که کاملا من بهتون حق میدم چون هنوز کاربورد عملی این چیزهایی که یاد گرفتیم رو نمیدونیم همش داریم یه سری موارد یاد میگیریم فانکشن، حلقه یه تکرار چه میدونم کالبک فانکشن اینا کاربوردشون کجاست توی تراحی ویب کجا به کار ما میان وقتی ما میخواییم یک سایت تراحی بکنیم باید یک کمی سبور باشین وقتی به موضوع ایونت ها برسیم به موضوع دام برسیم بام برسیم دقیقا کاربورد اینا رو توی عمل متوجه میشین ببینید یادگیری جایس جاوازگیری مثل HTML CSS نیست که هر چیزی یاد گرفتیم سریع با همون دانسته های فعیلیمون بریم یه مینی پروژه ترایی بکنیم کاربوردش رو توی عمل ببینیم یادگیری جاوازگیری بکنیم متفاوتی یعنی باید کلی مفاهم پای یاد بگیریم بعد کم کم بریم ازشون توی عمل استفاده بکنیم پس امیدوارم که خسته نشین از این مطالب و یکم سبور باشین دیگه چیزی نمونده که به اون مباحث هم برسیم و کار برده مواردی که تا الان یاد گرفتیم رو توی عمل ببینیم خیلی خیلی دوستتون دارم مراقب خودتون باشین خدا نگهدار