برنامه نویسی

درک وعده های جاوا اسکریپت – انجمن DEV

در برنامه نویسی ناهمزمان مدرن، وعده ها نقش مهمی در مدیریت پیچیدگی مدیریت عملیات ناهمزمان دارند.
به‌عنوان توسعه‌دهنده، ما اغلب با سناریوهایی مواجه می‌شویم که در آن وظایف به زمان نیاز دارند، مانند واکشی داده‌ها از سرورها یا برقراری تماس‌های API. Promises یک رویکرد ساختاریافته برای مقابله با این موقعیت ها ارائه می دهد و کد را خواناتر، قابل نگهداری و کارآمدتر می کند.

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

انتظار: این حالت اولیه هنگام ایجاد یک وعده است. این نشان دهنده زمان بین ایجاد وعده و نقطه ای است که یا محقق می شود یا رد می شود.

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

رد شد: اگر عملیات ناهمزمان با خطا مواجه شود، یک قول رد می شود. در این حالت، وعده به حالت رد شده منتقل می شود و دلیل رد را ارائه می دهد که معمولاً یک شی خطا است.

نحوه رسیدگی به وعده ها

درک وعده ها و دانستن نحوه رسیدگی به آنها هنگام برخورد با عملیات ناهمزمان در برنامه ها و پروژه های شما بسیار مهم است. Promises به شما امکان می دهد تا تماس های ناهمزمان را به طور موثر مدیریت کنید و اطمینان حاصل کنید که کد شما تعاملی و پاسخگو باقی می ماند.

دو روش اصلی برای رسیدگی به وعده ها وجود دارد:

1. Async/Await
یکی از ویژگی های قابل توجه معرفی شده در نحو به روز شده جاوا اسکریپت ES6 (ECMAScript 2015) Async/Await است. این رویکرد کد ناهمزمان را ساده می کند و آن را خواناتر می کند.

نحوه عملکرد Async/Await:

شما یک تابع ایجاد می کنید که یک کار ناهمزمان را ایجاد می کند و از کلمه کلیدی async قبل از اعلان تابع استفاده می کند. این نشان می دهد که تابع حاوی کد ناهمزمان خواهد بود. در داخل تابع، از کلمه کلیدی await قبل از وعده استفاده می کنید. این دستور به کد دستور می دهد تا اجرا را متوقف کند تا زمانی که وعده نتیجه ای را برگرداند و اطمینان حاصل کند که خطوط بعدی کد در تابع اجرا نمی شوند تا زمانی که نتیجه قول در دسترس باشد.

در اینجا یک مثال است:

کد ارائه شده از یک نقطه پایانی برای واکشی داده ها از طریق فراخوانی تابع استفاده می کند. تابع با کلمه کلیدی async علامت گذاری شده است، که نشان می دهد یک تابع ناهمزمان است و می تواند کلمه کلیدی await را درون آن به کار گیرد. در بلوک کد، از روش انتظار برای برقراری تماس استفاده می شود.

** 2. then()**

این روش معمولاً با وعده‌هایی استفاده می‌شود تا مشخص شود پس از حل و فصل وعده (با موفقیت تکمیل) چه اتفاقی باید بیفتد. تابعی را به عنوان آرگومان می گیرد که وقتی وعده حل شد اجرا می شود. این به شما امکان می دهد تا اقدامات زنجیره ای را پس از تحقق وعده انجام دهید. بنابراین، قبل از اجرای خطوط دیگر کد منتظر رفع یا رد شدن قول نباشید.

در اینجا یک مثال است:

این یک کد گیر برای رسیدگی به تماس های همگام با روش .then است

در این بلوک کد به روز شده، رویکرد ما برای رسیدگی به وعده ها تغییر کرده است. به جای استفاده از async/await، از دستور .then() برای رسیدگی به وعده ها استفاده می کنیم. این روش به ما اجازه می دهد تا دنباله ای از اقدامات را تعریف کنیم که باید با حل شدن وعده ها انجام شوند.

تفاوت عملی بین “Aync Await” و “.then”

حالا بیایید به تفاوت های عملی بین دو روش رسیدگی به وعده ها بپردازیم

بیایید این بلوک کد را اجرا کنیم:

یک تصویر ساده از دست زدن به نقطه و سپس وعده

وقتی این کد را اجرا می کنیم متوجه چیز جالبی شدیم و این سلسله مراتب نحوه اجرای کد ما است. اگر کنسول خود را بررسی کنیم، چیزی شبیه به این دریافت می کنیم:

پاسخ تماس ما

ما به وضوح می‌بینیم که «من اول آمدم» ابتدا قبل از نتیجه واقعی از API اجرا شد. که ما را به آنچه قبلاً بحث کردیم برمی‌گرداند، وقتی می‌گوییم با استفاده از نحو «.then» منتظر قول نمی‌مانیم، در عوض به آن خط عمل می‌دهیم تا هنگام بازگشت آن را انجام دهد که در مورد ما از خود خواسته بودیم. کد به console.log پاسخ داده شده توسط وعده ما.

حالا بیایید این بلوک کد را اجرا کنیم:

یک تصویر ساده از مدیریت وعده async/wait

حالا بیایید ببینیم چه چیزی در کنسول خود داریم

پاسخ تماس ما

عالی. اکنون اطلاعات ثبت شده کنسول به ترتیب مناسب چاپ شده است. که کشف قبلی ما را تأیید می‌کند، که انتظار Async، بلوک کد دیگری را اجرا نمی‌کند تا زمانی که پاسخی را از قول ما که حل شده یا رد شده است، دریافت نکند.

بنابراین یک بسته بندی است. امیدوارم بتوانیم درک کنیم که وعده ها در جاوا اسکریپت چگونه کار می کنند و چگونه آنها را به درستی مدیریت کنیم.

نوشته های مشابه

همچنین ببینید
بستن
دکمه بازگشت به بالا