همه چیز در مورد Event loop (حلقه رویداد) در Javascript



visibility  
mode_comment   ۱

همه چیز در مورد Event loop (حلقه رویداد) در Javascript

در این مطلب میخوایم یکی از مباحث پیشرفته Javascript که Event Loop یا اصطلاحا حلقه رویداد نامیده میشه رو با هم بررسی کنیم و ببینیم که Javascript چطور بصورت Asynchronous کار میکنه و بصورت مفهومی اون رو یاد بگیریم.

اگر در زمینه طراحی وب کار کرده باشید، حتما با زبان Javascript آشنایی دارید چون نقش بسیار مهمی رو ایفا میکنه.

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

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

درسته که در بعضی از زمینه‌ها اگر خیلی به Javascript هم تسلط نداشته باشید، قادر به ساخت برنامه مورد نظرتون میشید ولی اگر جزئیات این زبان رو به خوبی یاد بگیرید، بی‌شک سودهای زیادی خواهید کرد.

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

Event loop چیست؟

به احتمال زیاد اینکه Javascript یک زبان Single thread هست رو شنیدید. علاوه بر اون ممکنه اصطلاحات Call stack و Event queue رو نیز شنیده باشید. بیشتر افراد از اینکه Event loop به Javascript اجازه میده تا از قدرت Callback و Promise استفاده بکنه، اطلاع دارن ولی این همه ماجرا نیست و چیزای زیاد دیگه‌ای نیز در پشت‌صحنه وجود دارد.

خب بهتره که بریم سر اصل مطلب و بصورت خلاصه ببینیم که کدهای Javascript چطور اجرا میشن.Event loop javascript

تصویر بالا نحوه کارکرد Event loop بصورت خلاصه نشون داده شده است. در ادامه با سون لرن همراه باشید تا با جزئیات موارد مشخص شده در تصویر بالا بیشتر آشنا بشید.

Call stack

Javascript فقط یک Stack داره و کارش اینه که مشخص میکنه نوبت کدام تابع برای اجرا شدن هست و همچنین مشخص هست که چه تابعی بعد از تابع فعلی اجرا خواهد شد. به احتمال زیاد تا حالا زیاد در دنیای واقعی با Stack کار کردید:Call stack

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

پس همونطور که دیدید Stack یک ساختار شبیه به آرایه رو داره اما یک سری محدودیت و شرایط خاص در مورد اون وجود داره. شما میتونین فقط اعضا رو به آخر Stack اضافه کنید و تنها آخرین المنت رو در هر لحظه حذف کنید.

وقتی که یک تابع رو فراخوانی میکنید، اون تابع به Stack اضافه میشه. اگر در داخل تابع مورد نظر، یک تابع دیگر فراخوانی بشه، اون توابع به ترتیب به Stack اضافه میشه و بالای تابع اول قرار میگیرن و به همین ترتیب پیش میره تا همه توابع مورد نظر درون اون تابع به Stack اضافه بشن و نوبت اونا برای اجرا شدن مشخص بشه.

متخصص جاوا اسکریپت
با جاوا اسکریپت جادوگری کنید! آیا می دونید با زبان جاوااسکریپت می تونید، برای فرانت اند و بک اند وبسایت ها برنامه نویسی کنید؟ همینطور اپلیکیشن دسکتاپ و موبایل بسازید؟ اگر دوست داری اینکارها رو انجام بدی و React, ElectronJS, ReactNative, NodeJS,MongoDB و ... رو تو یه دوره یاد بگیری، متخصص جاوااسکریپت سون لرن رو حتما ببین : متخصص جاوا اسکریپت arrow_back

همونطور که دیدید زمانی که یک ارور در Console نمایش داده میشه، اطلاعات زیادی از نام توابع و مکانی که قرار دارن نمایش داده میشه که ساختار Stack و ترتیب فراخوانی شدن توابع رو به ما نشون میده که شما میتونین با استفاده از اون کدهای خودتون رو راحتتر Debug کنید و مشکل رو بررسی کنید.javascript stack trace

حالا بنظر شما اگر یک درخواست به سرور بدیم و یا اینکه یک Timeout رو تعریف کنیم چه اتفاقی در پس‌زمینه میوفته؟

شاید در ابتدا تصور کنید که وقتی چنین کاری رو انجام بدیم، کل مرورگر قفل میشه و منتظر میمونه تا کار مورد نظر انجام بشه و به پایان برسه و بعد از اون کار خودش رو ادامه بده و سراغ دیگر توابع بره. اما در واقعیت چیزی که اتفاق میوفته اینطور نیست و Callback queue کارها رو مدیریت میکنه و انجام میده.

Callback queue و جدول رویدادها

هر بار که از setTimeout یا هر عملیات Async دیگری استفاده میکنید، اون عملیات به جدول رویدادها یا Event table یا Web APIs اضافه میشه. این ساختار مشخص میکنه که یک تابع خاص باید بعد از یک رویداد خاص اجرا بشه. زمانی که اون رویداد اجرا شد (کلیک، timeout، حرکت دادن ماوس)، Callback مورد نظر مربوط به اون رویداد به Callback queue اضافه میشه و در صف قرار میگیره.

در نظر داشته باشید که Event table توابع رو اجرا نمیکنه و همچنین اونا رو به Call stack اضافه نمیکنه و تنها وظیفه‌ای که داره اینه که رابطه بین رویداد و توابع (Callback) ها رو در نظر بگیره و در زمان وقوع رویداد اونا رو به Callback queue اضافه کنه.

Event loop

در نهایت میرسیم به معروفترین عضو این مجموعه که Event loop هست. این عضو هر لحظه چک میکنه که Call stack خالی هست یا نه. میتونین به اون بصورت یک ساعت نگاه کنید که هر لحظه و بصورت مداوم خالی بودن Call stack رو چک میکنه و هر زمان که خالی شد، به Callback queue نگاه میندازه و اگر چیزی در صف وجود داشته باشه اون رو میگیره و به Call stack اضافه میکنه تا اجرا بشه. اگر هم چیزی در Callback queue قرار نداشته باشه هم اتفاقی نمیوفته و Event loop به کار خودش ادامه میده.

حالا چند مثال رو با هم بررسی میکنیم.

کد زیر رو ببینید:

اگر کد بالا رو در مرورگر اجرا کنیم بنظر شما اول first چاپ میشه یا second؟

بعضی از افراد فکر میکنن چون 0 قرار دادیم پس first زودتر چاپ میشه ولی اینطور نمیشه و در ابتدا second چاپ میشه و بعد از اون first چاپ میشه. موتور Javascript ابتدا به setTimeout میرسه و با خودش میگه خب این مورد رو در Event table قرار میدم و به ادامه کدها میرسم.

پس console.log('second') ابتدا در Call stack قرار میگیره و اجرا میشه و second در Console چاپ میشه و بعد از زمان 0 میلی‌ثانیه، console.log('first') به callback queue اضافه میشه و Event loop وقتی که Call stack خالی بشه (یعنی بعد از چاپ کردن Second در Console) اون رو به Call stack اضافه میکنه و اجرا میشه و first هم در Console چاپ میشه.

در حال حاضر در وب‌سایت سون لرن آموزش کامل جاوا اسکریپت وجود داره که میتونید تهیه کنید و لذت ببرید و علاوه بر اون در همین ماه ثبت‌نام دوره متخصص جاوا اسکریپت هم شروع میشه که توی اون تعداد زیادی از قابلیت‌های Javascript و تکنولوژی‌های مفید و مدرن دیگر آموزش داده میشه. می تونید با شرکت در این دوره به متخصص جاوا اسکریپت تبدیل بشید.

شما میتونین از این سایت استفاده کنید و ببینید که Event loop چطور کار میکنه. کدهای javascript رو در سمت چپ وارد کنید و بر روی Save + Run کلیک کنید.

نتیجه گیری

جزئیات بسیار زیادی در مورد Event loop وجود داره که میتونین اونا رو جستجو و مطالعه کنید و ما در اینجا فقط خلاصه‌ای از عملکرد اون رو برای شما توضیح دادیم. پس با دانستن Event loop و Call stack و Event table و Callback queue و ... میتونیم از نحوه اجرا شدن کدها توسط موتور Javascript بیشتر و بهتر اطلاع داشته باشیم.

اگر شما توضیحاتی در مورد Event loop دارید خوشحال میشم که با من و دیگر کاربران در میان بذارید.

comment دیدگاه کاربران
sahazamani replyپاسخ

زمان تعیین وقت ویزا فرانسه
به طور معمول وقت های موجود در سفارت برای یک تا سه هفته باز میشوند. اما به علت درخواست های بالا و حجم بالای متقاضیان معمولا تمام وقت های سفارت سریع اخذ می گردد و شما باید منتظر باز شدن وقت جدید بمانید و چون ممکن است سفارت وقت های جدید را هر زمانی برای اخذ آزاد کند، قطعا روند گرفتن وقت سفارت برای شما به طول خواهد انجامید.
چه مدارکی برای گرفتن وقت کنسولگری فرانسه لازم است؟
• کپی صفحه اول پاسپورت
• عکس 4*3
• شماره تماس دردسترس جهت هماهنگی

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

وقت سفارت ایتالیا
تعیین وقت سفارت ایتالیا در تهران

در گذشته برای تعیین وقت سفارت، افراد متقاضی به صورت حضوری مراجعه کرده و با حضور در صف های طولانی، زمان بسیار زیادی را برای اخذ وقت سفارت می گذاشتند. امروزه روش سنتی تعیین وقت ویزا منسوخ و روش های جدید تری نظیر روش آنلاین جایگزین آن شده است.
سفارت کشور ایتالیا به نشانی تهران، خیابان نلسون ماندلا ( آفریقا سابق )، بالاتر از تقاطع میرداماد، نبش پارک صبا، خیابان فرزان شرقی، پلاک ۱۵
تلفن: 22047802
مدارک مورد نیاز برای اخذ وقت سفارت ایتالیا
کپی صفحه اول پاسپورت
شمار تلفن درخواست کننده
تاریخ دعوت نامه یا هتل

تحصیل در ایتالیا، هزینه بسیار مناسب با کیفیت آموزشی بالا
تحصیل در ایتالیا در دانشگاه های دولتی این کشور به لحاظ هزینه ها متغیر، و به طور میانگین از 320 الی 3200 یورو در سال بوده و برای دانشجویان بین المللی نیز هزینه های تحصیل یکسان می باشد. میانگین شهریه 2000 یورو در سال است که موسسه تکیه گاه دانش می تواند آن را در برخی از موارد به 500 یورو در سال کاهش دهد.

وقت سفارت اتریش
سفارت اتریش به نشانی تهران ، خیابان نیاوران ، خیابان باهنر ، خیابان مقدسی ، خیابان محمود احمدی مازنی ، کوچه میر ولی ، پلاک 6 و 8
تلفن : 22750040
وقت تجاری سفارت اتریش
کشور اتریش یکی از کشور های پیمان شینگن و همچنین حوزه اتحادیه اروپا است.
واحد پول کشور های حوزه اتحاد اروپا و شینگن یورو می باشد و شرایط اقتصادی خود را از یکدیگر تبعیت می کنند. اقتصاد اروپا از زمان تشکیل اتحادیه اروپا به صورت یکپارچه در آمده است وحتی قوانین کاردر کشور های این اتحادیه تقریبا مشابه است. این کشور ها،همچنین در اعطای اجازه اقامت دادن وتابعیت هم به صورت مشابه در اکثر اوقات عمل می کنند.بصورت کلی قانون برای اخذ پیشنهاد کاری در اتحادیه اروپا، بدین صورت است که شغل مورد نظر می بایست در سایت کاریابی اتحادیه اروپا به مدت 3 هفته آگهی گردد. در همین زمان ،اگر هیچ داوطلبی از 28 کشور عضو این اتحادیه ،جهت قبول این شغل اقدام نکرد،در این زمان،سازمان ها می توانند نیروهای مورد نظر خود را از خارج این اتحادیه،به خدمت گیرند. بنابراین باید گفت پیدا کردن شغل برای افراد خارج ار اتحادیه اروپا بسیار سخت خواهد بود با توجه به دشوار بودن این روند وبا توجه به قوانین حال حاضر اتحادیه اروپا،بهترین روش پیش روی متقاضیان اخذ اقامت دائم اتریش،اقدام جهت اخذ ویزای تجاری اتریش و راه یاقتن به خاک کشور اتریش و در پی آن اقدام جهت اخذ ویزای تجاری اتریش می باشد.لازم به ذکر است ،افرادی که موفق به اخذ ویزای کاری اتریش می شوند،پس از حدودا چهار سال کار در اتریش و پرداخت مالیات به دولت اتریش،می توانند موفق به اخذ اقامت دائم اتریش شوند.
معمولا بری اخذ هر نوع ویزایی یک سری مدارک متفاوت نیاز است. ولی در کل این مدارک اصلیترین مدارکی هستند که باید برای گرفتن ویزای تجاری اتریش نیاز است.

مدارک لازم جهت اخذ وقت تجاری سفارت اتریش
1. اصل گذرنامه با ٣ ماه اعتبار از تاریخ انقضای مدت روادید و داری حداقل ٢ صفحه خالی. (امضاء شده).

2. دعوتنامه

3. ریزپرینت حساب بانکی

4. گواهی تمکن مالی بانک

5. فیش حقوقی

6. گواهی اشتغال به کار

7. گواهی ثبت شرکت/ پروانه کسب، پروانه مطب

8. سند ملکی

9. شناسنامه

10. سایر مدارک

11. کپی بیمه

وقت سفارت یونان

چگونه می توان وقت سفارت یونان در تهران را دریافت کرد؟
آدرس سفارت یونان در تهران کجاست؟
تلفن سفارت یونان در تهران چیست؟
نحوه گرفتن وقت سفارت یونان چیست؟
چگونه وقت سفارت یونان به صورت آنلاین اخذ می شود؟
مدارک لازم برای تعیین وقت سفارت یونان چیست؟
مدارک لازم جهت اخذ وقت تحصیلی سفارت یونان کدام است؟
برای دریافت وقت تجاری سفارت یونان چه مدارکی نیاز داریم؟

وقت سفارت بلژیک
مدارک لازم جهت وقت سفارت توریستی بلژیک

– اصل گذرنامه معتبر با 6 ماه اعتبار از تاریخ حرکت تور (امضاء شده).
– اصل گذرنامه باطل شده (در صورت وجود).
– فتوکپی از صفحات 2-9 گذرنامه و ویزاهای 3 سال گذشته از جمله ویزاهای شنگن، آمریکا، کانادا، استرالیا، …
* به علاوه یکسری فتوکپی از صفحات مشخصات و اعتبار برای بخش فروش.
– اصل فرم ویزا با امضاء توسط مسافر.
* برای افراد همراه در گذرنامه نیز باید فرم جداگانه امضاء شود.
* فرم ویزای افراد زیر 16 سال باید توسط والدین امضاء گردد.
– تکمیل فرم مشخصات فردی (به طور کامل).
– 3 قطعه عکس 5/4×5/3 رنگی، زمینه سفید و کاملاً از رو به رو (فاصله فوقانی سر تا چانه 32 میلیمتر باید باشد).
* عکس هایی که با شرایط فوق مطابقت نداشته باشند، تحویل گرفته نخواهند شد.
* لطفاً از ارسال عکس های اسکن و یا روتوش شده خودداری فرمائید.
– فتوکپی از تمام صفحات شناسنامه.
– گواهی اشتغال به کار، روزنامه رسمی، پروانه کسب به نام مسافرو لیست بیمه کارکنان.
* در گواهی اشتغال به کار باید نام و سمت مسافر ، میزان درآمد، سابقه و تاریخ مرخصی مطابق با تاریخ تور ذکر شده باشد
(همراه با مهر و امضاء توسط شخصی غیر از مسافر بر روی سر برگ شرکت).
* برای خانم های خانه دار گواهی اشتغال به کار همسر الزامی است.
– رزومه انگلیسی تایپ شده (شرح وضعیت خانوادگی، سوابق تحصیلی- شغلی و …) با امضاء توسط مسافر.
* تمام اطلاعات در متن رزومه باید به صورت تشریحی باشد.

وقت سفارت انگلیس

وقت سفارت توریستی انگلیس

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

مدارک مورد نیاز جهت اخذ ویزای توریستی انگلیس:

اصل پاسپورت فعلی با حداقل 6 ماه اعتبار از تاریخ مسافرت به انگلیسو اصل پاسپورت های قبلی.
یک نسخه تکمیل شده فرم آنلاین درخواست روادید به همراه برگه تاییدیه وقت و تاییدیه واریزی وجه سفارت
انگلیس که توسط این مرکز انجام پذیر است.
• 2قطعه عکس 4.5 * 3.5
• اصل و یا کپی دعوتنامه معتبر و در صورت نداشتن رزرو هتل در انگلستان
• اصل و ترجمه رسمی سند ازدواج
• اصل و ترجمه رسمی شناسنامه
اصل و ترجمه رسمی مدارک شغلی مربوطه از قبیل (گواهی اشتغال به کار که در آن در مورد تاریخ درخواست مرخصی ذکر شده باشد و اینکه آیا این مرخصی با حقوق میباشد یا خیر، جواز کسب، پروانه فعالیت، کارت بازرگانی، لیست بیمه 6 ماه آخر، برگه مالیاتی پرداخت شده، کارت پرسنلی حکم کارگزینی، حکم بازنشستگی، کارت بازنشستگی، پروانه مطب، کارت مهندسی، کارت دانشجویی و…)
**در صورت کامل نبودن مدارک شغلی خود از مدارک شغلی همسر هم میتوانید استفاده نمایید.
مدارک میزبان در انگلستان (دعوتنامه به همراه کپی پاسپورت و مدارک اقامتی دعوت کننده، پرینت حساب بانکی، مدارک شغلی و گواهی اشتغال به کار با ذکر درامد , فیش حقوقی، سند ملکی ملک محل اقامت در انگلستان یا اجاره نامه، آخرین برگ مالیاتی پرداخت شده،قبوض پرداختی از قبیل آب برق و گاز و…)

وقت سفارت آلمان
وقت سفارت آلمان

[url=https://www.franceembassytime.com/ تعیین وقت سفارت فرانسه[/url]

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :