آموزش ویژگی های ECMAScript 6 (جلسه 36) : آموزش کار با Promise - قسمت 2

- visibility ۲ mode_comment

همونطور که اطلاع دارید در جلسه قبل بحث مربوط به Promise ها رو به شروع کردیم و مقدماتی در مورد برنامه نویسی Asynchronous و مشکلات قبل از به وجود اومدن Promise ها رو بهتون توضیح دادیم. در این جلسه میخوایم بحث Promise ها رو ادامه بدیم و هر چیزی که نیاز دارید رو در اختیارتون قرار بدیم.

همونطور که دیدید در جلسه قبل مشکلات قبل از Promise ها مثل Callback hell رو بهتون گفتیم. با اومدن Promise ها شما راحت تر میتونین برنامه نویسی Asynchronous رو مدیریت کنید و کدهاتون رو جمع و جور تر و خواناتر بنویسید.

Promise چیست؟

قبل از اینکه ES6 به صورت رسمی Promise ها رو با خودش به Javascript بیاره، مشخصات مربوط به Promise ها با عنوان Promise/A+ منتشر شده بود. ES6 برای پیاده سازی Promise از این مشخصات و استاندارد استفاده کرده است. Library های زیاد دیگه ای هم برای Promise مانند Q و Bluebird و RSVP وجود دارند که از همین استاندارد استفاده کرده اند.

برنامه نویسان قبل از معرفی شدن Promise در ES6 از این کتابخانه ها برای کارهای Asynchronous استفاده میکردند.

ما در این آموزش در بعضی از جاها بجای Promise از واژه قول استفاده میکنیم.

Promise ها قابلیتی رو به ما میدن که میتونیم فرآیند Asynchronous رو در مدلی شبیه به Synchronous مدیریت کنیم و راحتتر کدنویسی کنیم. شما یک کد غیرهمزمان رو اجرا میکنید و یک قول برای اون در نظر میگیرید. تا زمانی که این کد خروجی تکلیفش روشن نشده باشه، قول در وضعیت Pending یا انتظار باقی میمونه. اگر کد مورد نظر با ارور همراه بشه، Promise در حالت Rejected یا رد شده قرار میگیره و ما میتونیم از متد catch برای کارهای مورد نظرمون انجام بدیم. اما اگر کد مورد نظر با موفقیت انجام یا fulfill یا موفق بشه، میتونیم با استفاده از متد then کارهای مورد نظرمون رو انجام بدیم.

با استفاده از این موارد خیلی بهتر از Callback ها میتونیم کدهای Asynchronous رو مدیریت کنیم و با فهم و خوانایی بیشتری کدنویسی کنیم. همچنین خطایابی و ارزیابی نتایج با استفاده از قول ها خیلی راحتتر از Callback ها می باشد.

مثالی ساده برای فهم بهتر قول ها

یک مثال ساده در این سایت قرار گرفته که میتونین با مطالعه اون به راحتی با قول ها آشنا بشید.

فرض کنید که شما یک بچه هستید. مادرتون به شما قول میده که تا هفته بعد یک گوشی همراه جدید براتون میخره و بهتون میده.

شما دقیقا اطلاع ندارید که تا هفته بعد این گوشی بهتون میرسه یا خیر. چون مادرتون فقط به شما قول داده. مادرتون میتونه همونطور که قول داده بود، تا هفته بعد گوشی رو برای شما تهیه کنه و بهتون بده و یا اینکه ممکنه مشکل یا ناراحتی براشون پیش بیاد که نتونن براتون این گوشی رو تهیه کنند.

این مورد یک قول است. یک قول 3 حالت دارد:

  1. قول در حالت بلاتکلیفی یا انتظار یا Pending: شما دقیقا اطلاع ندارید که تلفن تا هفته دیگه بهتون میرسه یا خیر.
  2. قول عملی یا Resolved میشه: مادرتون همونطور که قول داده بود براتون گوشی رو میخره و بهتون میده
  3. قول رد یا Rejected میشه: بدلیل اینکه برای مادرتون ناراحتی پیش اومده، نتونسته که قولی که داده رو عملی کنه و گوشی جدید برای شما نمیخره.
more  بیشتر بخوانید : ترفندهای پیشرفته jQuery (قسمت 18)

امیدوارم با این مثال ساده قول ها رو متوجه شده باشید. با استفاده از قول ها در ES6 میتونین همین روند رو در دنیای Javascript نیز برای کدها عملی کنید و با کدهای Asynchronous مانند همین قول مادر و فرزند رفتار کنید.

در جلسات بعد نحوه کار با قول ها در دنیای Javascript رو به شما آموزش میدیم.

موفق و پیروز باشید.

یا علی

comment دیدگاه کاربران
رسول دلدار

سلام آقا اسفندیاری خسته نباشید مطلب تون عالی هست یک سوال ببخشید شاید مربوط به پست نباش تابع eval توی php استفاده از توضیه نمیشه چون خطرات امنیتی به وجود میاره می خواستم بدونم توی جاوااسکریپت ازش استفاده کنیم خطرات امنیتی به وجود میاره نه

محمد اسفندیاری

سلام ممنون
پیشنهاد میکنم لینکهای زیر رو مطالعه بفرمایید:
https://security.stackexchange.com/questions/94017/what-are-the-security-issues-with-eval-in-javascript
https://stackoverflow.com/questions/39058482/javascript-eval-and-security
https://www.nczonline.net/blog/2013/06/25/eval-isnt-evil-just-misunderstood/
موفق باشید

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.