تفاوت Stack و Queue فقط یک مفهوم تئوری نیست؛ در Event Loop جاوااسکریپت هم نقش مهمی دارد.
در Stack، آخرین ورودی زودتر خارج میشود؛ یعنی LIFO.
برای همین Call Stack در JavaScript محل اجرای فعلی کدهاست و تابعها روی آن قرار میگیرند.
در Queue، اولین ورودی زودتر خارج میشود؛ یعنی FIFO.
برای همین callbackها در Event Loop داخل Queue منتظر میمانند تا نوبت اجرا برسد.
نکته مهم این است که Event Loop تا وقتی Call Stack خالی نشود، چیزی از Queue وارد اجرا نمیکند.
به زبان ساده:
ساختار Stack یعنی «الان چی اجرا میشود؟»
ساختار Queue یعنی «بعداً نوبت چی میشود؟»
در آرایههای JavaScript هم pop() شبیه Stack است و معمولاً O(1) اجرا میشود.
اما shift() شبیه Queue است و معمولاً O(n) است؛ چون بقیه آیتمها باید جابهجا شوند.
@DevTwitter | <Nima K./>
Post #12214
6.98K


- 👍 32
- ❤ 10
- 🍌 6