مقایسه Asynchronous با Synchronous
در جاوا اسکریپت در حالت پیش فرض کدها به صورت Synchronous اجرا میشوند؛ حالا این Asynchronous یا Synchronous چیست؟!
مقایسه Asynchronous با Synchronous
حالت اول اگر بخواهیم تعریف عامیانهای از Synchronous رو بگوییم: در این حالت در هر لحظه از زمان یک خط از کد ما اجرا خواهد شد. اگر محیط اپلیکیشن خود را رستوران در نظر بگیریم و خود اپلیکیشن را گارسون و کلاینت را مشتری، به این صورت خواهد بود که اول گارسون به میز شمارهی یک میرود سفارش را گرفته و او منتظر مینشیند تا سفارش میز شمارهی یک آماده شود و بعد از تحویل سفارش سراغ میز شمارهی دو میرود. خب چنین راهکاری قطعا منطقی نخواهد بود. کدهای ما هم در حالت پیش فرض این شکلی کار میکنند. (خط به خط تا انتها)
بررسی Asynchronous
بهتر بود اگر گارسون سراغ چند میز که آماده سفارش دادن هستند برود و سفارش را دریافت کند و به کیترینگ تحویل دهد؛ هر زمان که سفارش میزی آماده شد آن را تحویل میدهد؛ به این صورت وقفهای در کارهای اجرایی رستوران پیش نخواهد آمد. حالت دوم یعنی Asynch و در عمل به این صورت است که کارهایی که انجام دادن آنها نیازمند صرف زمان هستند باید به صورت Asynch نوشته شوند و در این حالت اپلیکیشن ما کارش متوقف نمیشود تا یک سفارش به مرحله پایانی برسه و بعد سراغ سفارش بعدی برود.
Asynch چه زمانی استفاده میشود؟
وقتی قرار است یک اتفاقی رخ دهد که نیازمند صرف زمان است. مثلا: وقتی قرار است یک فایل دانلود یا آپلود شود وقتی از توابع Asynch استفاده شود، اپ ما کار خودش رو ادامه میدهد تا مرحله آپلود یا دانلود به اتمام برسد. Asynch به ما کمک میکند تا کاربر را از فهم منطق برنامه دور نگه داریم؛ چون نیازی نیس کلاینت از پس زمینهی کار با خبر شود مطقی نیست که صبر کنیم تا کارش تموم شود و سپس سراغ کار بعدی برویم.
پیشنهاد نویسنده: مقایسه SSR با CSR
نظرات خود را در این زمینه برای ما بنویسید.



















در پروژههای فرانتاند، استفاده از async برای مدیریت درخواستها بهتره یا باید از کتابخونههایی مثل Axios استفاده کنیم؟
استفاده از async/await در جاوا اسکریپت برای مدیریت درخواستهای آسنکرون عالی است و Axios نیز یک کتابخانه محبوب برای این منظور است که میتواند کار را راحتتر کند.
کسی تجربه کرده که استفاده بیشازحد از توابع async باعث کندی برنامه بشه؟
بله، استفاده بیش از حد و نادرست از توابع async میتواند منجر به سربار اضافی و کندی برنامه شود. مدیریت صحیح آنها برای حفظ عملکرد بهینه ضروری است.
توی جاوااسکریپت وقتی از setTimeout استفاده میکنیم، این تابع واقعاً Asynchronous محسوب میشه یا نه؟
بله setTimeout یکی از توابع Asynchronous در جاوااسکریپت است که اجازه میدهد کدهای دیگر اجرا شوند در حالی که منتظر اتمام تایمر هستیم.
برای درخواستهای API توی پروژههای بزرگ، استفاده از async/await بهتره یا Promiseها کافی هستن؟
برای درخواستهای API در پروژههای بزرگ، استفاده از async/await به دلیل خوانایی و سادگی کد، معمولاً ترجیح داده میشود، اما Promiseها نیز همچنان راهکار قدرتمندی هستند.
چه اتفاقی میافته اگه یک تابع async رو بدون await صدا بزنیم؟
اگر یک تابع async را بدون await صدا بزنید، تابع اجرا میشود اما بلافاصله یک Promise برمیگرداند که وضعیت آن pending خواهد بود و شما منتظر اتمام اجرای تابع نخواهید ماند.