آموزش Generators در Node.js و مقایسه با توابع CallbacksReviewed by مژده کاروانیان on Oct 10Rating: 3.0
آموزش Generators در Node.js و مقایسه با توابع Callbacks

آموزش Generators در Node.js و مقایسه با توابع Callbacks

درخدمت شما هستیم با آموزش Generators در Node.js و مقایسه با توابع Callbacks از وب سایت آموزش برنامه نویسی سورس باران. در این جلسه که بخش هشتم آموزش Node.js است معرفی و آشنایی کامل با آموزش Generators در Node.js و مقایسه با توابع (کال بک) Callbacks را خواهیم داشت. با ما همراه باشید…

Generator ها در نود جی اس

  • Generator ها  اخیرا در Node.js بسیار مشهور شده اند و احتمالاً به دلیل کارهایی است که قادر به انجام آن هستند. Generators ، توابع اجرایی هستند که می توانند معلق و در مرحله بعد از سر گرفته شوند.
  • Generator ها هنگام انجام مفاهیمی مانند lazy execution مفید هستند. این اساساً بدان معنی است که با تعلیق اجرا و از سرگیری مجدد در خواست ، فقط زمانی که به آن نیاز داریم می توانیم مقادیر را به دست بیاوریم.

Generator ها دو روش اصلی زیر دارند:

Yield method.1 (روش عملکرد) – به تابعی گفته می شود  که اجرای تابع را در یک خط خاص که روش عملکرد نامیده می شود متوقف کند.

Next method.2 (روش بعدی) – این روش از برنامه اصلی برای از سرگیری اجرای یک تابعی که دارای یک روش عملکرد (Yield method) است ، نامیده می شود. اجرای تابع تا روش عملکرد بعدی یا تا پایان روش ، ادامه خواهد یافت.

بیایید مثالی از چگونگی استفاده از Generator ها را بررسی کنیم. در مثال، ما می خواهیم یک تابع Add ساده داشته باشیم که 2 عدد را اضافه می کند ، اما  اجرای روش را در نقاط مختلف متوقف نگه می داریم. تا نشان دهیم چگونه می توان از مولدها استفاده کرد.

Node.js Generators & Compare with Callbacks

توضیح کد:

  1. اولین قدم تعریف “تابع” ​مولد است. توجه داشته باشید که این کار با اضافه کردن “*” به کلید واژه تابع انجام می شود. سپس تابعی به نام Add را تعریف می کنیم که پارامتر x را در بر می گیرد.
  2. کلمه کلیدی yield، مخصوص Generator ها است. این باعث می شود آن را به یک ساختار قدرتمند برای متوقف کردن تابع در وسط هر چیزی تبدیل کنید. بنابراین در اینجا ، اجرای تابع متوقف می شود تا زمانی که تابع  () Next را فراخوانی کنیم ، که در مرحله 4 انجام خواهد شد. در این مرحله مقدار x=6 می شود و اجرای تابع متوقف می شود.
  3. اینجاست که ما ابتدا تابع Generator را صدا می کنیم و مقدار 5 را به تابع Add خود ارسال می کنیم. این مقدار در پارامتر x از تابع Add ما جایگزین می شود.
  4. هنگامی که ما تابع  () Next را فراخوانی می کنیم ، تابع ()Add  اجرا را از سر می گیرد. هنگامی که عبارت بعدی (var y= yield(null اجرا شود ، تابع () Add مجدداً اجرا را متوقف می کند.
  5. اکنون پس از فراخوانی دوباره تابع بعدی () Next، عبارت های بعدی اجرا می شوند و مقدار ترکیبی از x = 5 و y = 6 اضافه می شود و برمی گردد.

 

توابع Callbacks در مقابل Generator ها در نود جی اس

از Generator ها برای حل مسئله ای که به عنوان جهنم برگشت پذیر شناخته می شود ، استفاده می شود. گاهی اوقات توابع برگشت پذیر در حین توسعه یک برنامه Node.js تو در تو می شوند که استفاده از توابع برگشتی را بسیار پیچیده می کند.

این جایی است که Generator ها مفید هستند. یکی از متداول ترین نمونه های این کار هنگام ایجاد توابع تایمر است. بیایید مثال زیر را ببینید که چگونه  مولدها می توانند اثبات کنند که از طریق فراخوان بازگشتی مفید هستند. مثال ما فقط یک تابع ساده با تأخیر زمان ایجاد خواهد کرد. سپس می خواهیم این تابع را با تاخیر 1000 ، 2000 و 3000 میلی ثانیه بنامیم.

مرحله 1) تابع برگشتی خود را با کد تأخیر زمان لازم تعریف کنید.

Node.js Generators & Compare with Callbacks

توضیح کد:

  1. در اینجا ما در حال ایجاد تابعی به نام Timedelay با پارامتری به نام ptime هستیم. این تأخیر زمانی لازمی است که می خواهیم در برنامه خود معرفی کنیم.
  2. مرحله بعدی فقط ایجاد یک پیام است که به کاربر نمایش خواهد داد که می گوید این برنامه برای این تعداد میلی ثانیه مکث می کند.

مرحله 2) اگر ما بخواهیم فراخوانی بازگشتی را، ترکیب کنیم به کد زیر نگاه کنید. فرض کنید ما می خواهیم  فراخوانی بازگشتی را با مقدار 1000 ، 2000 و 3000 میلی ثانیه ترکیب کنیم ، کد زیر نشان می دهد که چگونه ما نیاز به اجرای این موارد با استفاده از فراخوانی بازگشتی داریم.

Node.js Generators & Compare with Callbacks

توضیح کد:

  1. ما در حال صدا زدن Timedelay به عنوان یک فراخوانی بازگشتی با مقدار 1000 هستیم.
  2. بعد می خواهیم دوباره تابع Timedelay با مقدار 2000 را صدا بزنیم.
  3. در آخر ، ما می خواهیم دوباره تابع Timedelay را با مقدار 3000  صدا بزنیم.

از کد بالا می بینید که می خواهیم تابع ما  چندین بار صدا زده شود.

مرحله 3) حالا بیایید ببینیم چگونه با استفاده از مولدها همان کد را پیاده سازی کنیم. از کد زیر می توانید ببینید که اجرای تابع Timedelay با استفاده از Generator ها چقدر ساده شده است.

Node.js Generators & Compare with Callbacks

توضیح کد:

  1. ما ابتدا یک تابع Generator را تعریف می کنیم که برای صدا زدن  تابع Timedelay استفاده می شود.
  2. ما در حال فراخوانی تابع Yield به همراه تابع Timedelay با مقدار 1000 به عنوان پارامتر هستیم.
  3. سپس ما از تابع Yield به همراه تابع Timedelay با مقدار 2000 به عنوان پارامتر فراخوانی می کنیم.
  4. در آخر ، ما تابع Yield را به همراه تابع Timedelay با مقدار 3000 به عنوان پارامتر فراخوانی می کنیم.

خلاصه

از Generator ها نیز می توان برای کاهش مشکلات مربوط به توابع برگشتی تو در تو استفاده کرد و در از بین بردن آنچه به عنوان جهنم فراخوانی بازگشتی شناخته می شود ، کمک کرد. Generator ها برای متوقف کردن پردازش یک تابع استفاده می شوند. این با استفاده از روش ” yield” در تابع ناهمزمان انجام می شود.

 

لیست تمامی جلسات آموزش Node.js

  1. آموزش Node.js در ۳ روز: آشنایی با Node.js
  2. آموزش دانلود و نصب Node.js -NPM در ویندوز
  3. آموزش Node.js در ۳ روز: ایجاد،انتشار،گسترش و مدیریت در Node.js
  4. آموزش HTTP در Node.js + ایجاد سرور و دریافت داده
  5. آموزش فریم ورک Express در Node.js در ۱۰ دقیقه
  6. آموزش promise در برنامه نویسی Node.js
  7. آموزش تولید promise با کتابخانه BlueBird در Node.js
  8. آموزش Generators در Node.js و مقایسه با توابع Callbacks
  9. آموزش جریان داده یا Streams در Node.js : کار با Filestream و Pipes در Node.js
  10. آموزش تست Node.js با Jasmine
  11. تفاوت Node.Js و AngulrJS
  12. تفاوت Node js و Python
  13. آموزش MongoDB در Node.js
  14. کتاب آموزش Node.js برای مبتدی ها بصورت کاملا گویا