همگام سازی و انتظار – انجمن DEV

برنامه نویسی ناهمزمان در جاوا اسکریپت می تواند کمی چالش برانگیز باشد، به خصوص زمانی که با کدهایی سروکار داریم که به درخواست های شبکه یا سایر وظایف طولانی مدت بستگی دارد. با این حال، معرفی از async و await کلمات کلیدی در ES2017 (also known as ES8) برنامه نویسی ناهمزمان را در جاوا اسکریپت بسیار ساده کرده است. در این مقاله، آنچه را بررسی خواهیم کرد async و await هستند و نحوه استفاده از آنها
async و await چیست؟async و await دو کلمه کلیدی جدید معرفی شده در ES2017 هستند که برنامه نویسی ناهمزمان را در جاوا اسکریپت ساده می کنند. را
-
asyncکلمه کلیدی برای تعریف یک تابع ناهمزمان استفاده می شود که وعده ای را برمی گرداند که با مقدار بازگشتی تابع حل می شود. -
awaitکلمه کلیدی برای توقف اجرای an استفاده می شودasyncتا زمانی که یک وعده حل و فصل شود عمل کنید.
یک تابع async به صورت زیر تعریف می شود:
async function myAsyncFunction() {
// Code here
}
داخل یک async تابع، شما می توانید استفاده کنید await کلمه کلیدی برای توقف اجرای تابع تا زمانی که یک وعده حل شود. نحو استفاده از await به این صورت است:
let result = await myPromise;
myPromise وعدهای است که میخواهید منتظر آن باشید و نتیجه آن ارزشی است که قول به آن حل میشود.
واکشی داده ها از یک API
بیایید به مثالی نگاهی بیندازیم که نحوه استفاده را نشان می دهد async و await برای واکشی داده ها از یک API.
فرض کنید یک نقطه پایانی API داریم که لیستی از کاربران را برمی گرداند. نقطه پایانی در https://jsonplaceholder.typicode.com/users موجود است. ما می خواهیم این داده ها را واکشی کنیم و نام کاربران را در کنسول ثبت کنیم.
در اینجا این است که چگونه می توانیم آن را با استفاده از آن انجام دهیم async و await:
async function getUsers() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/users');
const data = await response.json();
const names = data.map(user => user.name);
console.log(names);
} catch (error) {
console.error(error);
}
}
getUsers();
در اینجا، یک را تعریف می کنیم async تابع فراخوانی شد getUsers که داده ها را از API با استفاده از fetch تابع. سپس از await کلمه کلیدی به pause اجرای تابع تا زمانی که داده ها به صورت JSON با استفاده از روش json شی پاسخ واکشی و تجزیه شوند.
هنگامی که داده ها را به عنوان آرایه ای از اشیاء کاربر داشته باشیم، از آن استفاده می کنیم map روشی برای استخراج ویژگی نام هر کاربر، و سپس وارد کردن آرایه حاصل از نام ها در کنسول.
اگر در حین فرآیند واکشی یا تجزیه خطایی وجود داشته باشد، آن را با استفاده از a مدیریت می کنیم try-catch مسدود کردن.
در نهایت، ما به getUsers عملکرد برای شروع عملیات ناهمزمان.
*به عنوان مثال پاسخ دهید: *
- https://replit.com/@CodeOf1/asyncawait
- https://replit.com/@CodeOf1/asyncawait02



