توابع async/await در جاوااسکریئت چی هستند و کجاها کاربرد دارند؟ اصلا چرا از این توابع استفاده میکنیم؟
2 پاسخ ها
Async/await یک ویژگی جدید در جاوا اسکریپت است که کار با توابع ناهمزمان را سادهتر و خواناتر میکند. Async/await بر اساس promise ها کار میکند و به شما اجازه میدهد که به جای استفاده از then و catch برای مدیریت حالات مختلف promise ، از کلمات کلیدی async و await استفاده کنید.
Async یک کلمه کلیدی است که برای تعریف یک تابع ناهمزمان استفاده میشود. یک تابع ناهمزمان یک promise را برمیگرداند که میتواند حالت پذیرفته شده (fulfilled) یا رد شده (rejected) باشد. مقداری که تابع ناهمزمان برمیگرداند، مقداری است که promise پذیرفته شده دارد. اگر تابع ناهمزمان یک خطا را برگرداند یا throw کند، promise رد شده خواهد بود.
Await یک کلمه کلیدی است که برای انتظار برای اتمام یک promise استفاده میشود. Await فقط در داخل یک تابع ناهمزمان قابل استفاده است و باعث میشود که اجرای تابع متوقف شود تا promise کامل شود. سپس مقدار promise را برمیگرداند. اگر promise رد شده باشد، await یک خطا را throw میکند که میتوان با try/catch بررسی کرد.
با استفاده از async/await میتوانید کدهای ناهمزمان را به شکل همزمان بنویسید و از تودرتو شدن و پیچیدگی کدها جلوگیری کنید. مثال زیر نشان میدهد که چگونه میتوان از async/await برای دریافت داده از یک API استفاده کرد:
در جاوا اسکریپت multitask وجود ندارد؛ بنابراین توابع باید پشت سر هم اجرا شوند. فرآیندهای مختلفی وجود دارند که اجرای آنها منوط به اجرای فرآیندهای قبلی است؛ مثلا برای محاسبهی میانگین چند عدد ابتدا باید این اعداد با هم جمع شوند و خروجی آن بر تعداد اعداد تقسیم شود. برای میانگین گیری شما نمیتوانید ابتدا عمل تقسیم را انجام دهید و سپس اعداد را با هم جمع کنید؛ چون به خروجی جمع برای تقسیم نیاز خواهید داشت. برای درک بهتر توابع آسنکرون به تصویر زیر دقت کنید.
کاری که باید انجام شود این است که توابع با هم همگام شوند و ترتیب اجرای آنها مشخص شود. این دقیقا همان کاری است که افزونهی Async و await در جاوا اسکریپت برای ما انجام میدهند. این افزونه بر اساس promise ها کار میکند
اطلاعات تکمیلی در این لینک