callback و بازگشت تابع در nodejs javascript

به نام دانای بر حق

 

مقدمه

به یاد دارم زمانی که nodejs رو شروع کردم یکی از چیزهایی که منو به معنای واقعی کلمه اذیت کرد بازگشت مقادیر در توابع بودش اگر اشتباه نکنم یک روز کاری کامل کل فضای سایبر رو بالا پایین کردم تا به نتیجه مطلوب رسیدم. حالا یه کم وقت اضافه پیدا کردم تو عیدی گفتم این مورد رو به منتشر کنیم  تا اگر پارسی زبان عزیزی دوست داشت با nodejs کار کنه درگیر این مورد اذیت کننده نباشه.

 

نکته اول تو این مورد ما چیزی به نام retrun نداریم مثل خوده js که در مرورگر استفاده میکنید به اون معنی که باهاش آشنا هستید.

واما:

نکته دوم به جاش باید از callback استفاده کنید پس باید چهارچوب مفهومی که توی یادگرفته قبلی داشتین رو بذارین کنار.

 

callback چیست؟

به یاد دارم اولین باری که با این مفهوم برخورد کردم در RCE بود که با مفهوم TLS callback  آشنا شدم واسم خیلی عجیب و جالب بود، حالا کار این TLS callback چی بود؟ این یه تابع بود که میتونست قبل از اجرا exe اجرا بشه و نامرد پروتکتور ها کلی کد AntiDebug میرختن توش حالا اگر این یه تیکه براتون سنگین بود نگران نباشید یه خاطره بود حالا واقعا callback چیست؟ در مفهوم عادی مثلا یکی تماس میگیره شما رد تماس میدین میگین call back you یعنی تماس متقابل برقرار میکنم اما در اصطلاح برنامه نویسی دارای مفاهیم زیر میتونه باشه:

  • ارجاع دادن یک آرگومان به تابع دیگر
  • احضار یک رویداد پس از یک یا چند رویداد
  • یا تکه ای از یک تابع مثل آرگومان که میتونه توسط توابع دیگر کنترل بشه

همه این تعاریف میتونه صادق باشه یا حداقل یکیش صادق هستش به ajax زدن در jquery که حتما زدید توجه کنید اونجایی که جواب ajax رو میگیرد و روش کار میکند اون قسمت کال بک میباشد

 

بحث اصلی تعریف یک  callback برای برگرداندن مقادیر

ما فرض میکنیم یه تابع داریم میخواد به mysql متصل بشود بعد ما متوجه شویم آیا اتصال موفق بوده یا خیر به کد زیر توجه کنید:

 

اما ما یه تابع تعریف کردیم به نام myconnect خب حالا ما هیچ آرگومان ورودی قاعدتاْ نیاز نداریم اما برای این مقدار بازگشت داشته باشیم یه آرگومان اضافه میکنیم به نام  callback خب حالا ما در ادامه تلاش میکنیم به mysql  وصل شیم بعد نتیجه دو حالت بیشتر ندارد true  و یا false پس ما توجه کنید نمیتونیم return کنیم پس حالا میایم از این روش استفاده میکنیم:

توجه کنید ما مقداری که نیاز داریم به بازگشت را در callback که نام آرگومان ما هست به صورت تابع می فرستیم

به همین سادگی

 

نحوه استفاده از این تابع:

تابع بالا فرض کنید:

ما میایم در آرگومان تابع myconnect به جای گذاشتن متغییر یه تابع تعریف میکنیم و e یه نام دلخواه هست که توسط callback پر میشه و در آخر نمایش می دهیم.

 

اما نکته آخر هر چند تعداد متغییر که دوست داشتین در callback میتوانید برگشت بدین و موقع استفاده هم باید به همون تعداد که پاس دادید تعریف کنید تا استفاده کنید البته اجبار نیست و اصول هست.

در راه پیشرفت موفق باشید و هرگز نا امید نباشید. 😛

‌A1Gard

اول از همه کوچک ترین عضو مجموعه 4xmen بنده حقیر هستم. در ثانی یک توسعه دهنده هستم زمینه های تخصصی کارم :‌ Delphi, PHP, C++ ,Python, JavaScript, Unity game engine, C#, asm و علاقه مند به لینوکس، RCE ، کریپتوگرافی هستم. تا الان حضرت حق اینا رو به ما داده و هر وقت که بخواد ازمون میگیره دست خودشه. یا حق، با حق، تا حق

More Posts

2 thoughts on “callback و بازگشت تابع در nodejs javascript”

  1. خیلی عالی .
    فقط میخواستم بگم یکم مدرن تر برای این راه حل Promise هست.
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
    به عنوان مثال تابع شما به صورت زیر میشه :

    و موقع استفاده هم :

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *