JavaScript Functions, Threads, اور Asynchronous Execution
آپ کو یہ سمجھنے کی ضرورت ہے کہ JavaScript اندرونی طور پر (under the hood) کیسے کام کرتی ہے۔
یہاں functions، processes، threads، اور execution کے انداز کی تفصیل دی گئی ہے۔
JavaScript Functions کی اقسام
- Named Function: ایک مخصوص نام استعمال کرتا ہے۔ اس سے debugging آسان ہو جاتی ہے۔
- Anonymous Function: اس کا کوئی نام نہیں ہوتا۔ آپ اکثر انہیں callbacks کے طور پر استعمال کرتے ہیں۔
- Function Expression: آپ ایک function کو variable کے ساتھ تفویض (assign) کرتے ہیں۔
- Arrow Function: => symbol کا استعمال کرتے ہوئے ایک مختصر syntax۔
- IIFE: ایک Immediately Invoked Function Expression۔ یہ جیسے ہی آپ اسے define کرتے ہیں، فوراً چل جاتا ہے۔
Process بمقابلہ Thread
ایک Process آپ کے کمپیوٹر پر چلنے والا ایک پروگرام ہے۔
- ہر process کی اپنی memory ہوتی ہے۔
- اگر ایک process کریش ہو جائے، تو دوسرے چلتے رہتے ہیں۔
- مثال: Chrome اور Spotify الگ الگ processes ہیں۔
ایک Thread ایک process کے اندر ایک چھوٹا یونٹ ہے۔
- Threads ایک ہی memory شیئر کرتے ہیں۔
- یہ ایک ہی پروگرام کو ایک وقت میں کئی کام کرنے کی اجازت دیتے ہیں۔
- مثال: Chrome کے اندر، ایک thread پیج کو render کرتا ہے جبکہ دوسرا آپ کے ماؤس کلکس کو سنبھالتا ہے۔
Synchronous بمقابلہ Asynchronous
JavaScript single-threaded ہے۔ یہ call stack کا استعمال کرتے ہوئے ایک وقت میں ایک ہی ٹاسک کو سنبھالتی ہے۔
Synchronous Execution:
- ٹاسک ایک کے بعد ایک چلتے ہیں۔
- ہر ٹاسک پچھلے ٹاسک کے ختم ہونے کا انتظار کرتا ہے۔
- سست (slow) ٹاسک آپ کے کوڈ کو چلنے سے روک دیتے ہیں۔
Asynchronous Execution:
- ٹاسک پس منظر (background) میں چلتے ہیں۔
- کسی ٹاسک کے ختم ہونے کے انتظار میں کوڈ نہیں رکتا۔
- یہ Web APIs، ایک Callback Queue، اور ایک Event Loop کا استعمال کرتا ہے۔
Asynchronous کیسے کام کرتا ہے:
- JavaScript ایک ٹاسک (جیسے کہ timer) کو Web API کو بھیجتی ہے۔
- مین کوڈ چلتا رہتا ہے۔
- جب ٹاسک ختم ہو جاتا ہے، تو یہ Callback Queue میں چلا جاتا ہے۔
- جب stack خالی ہوتا ہے، تو Event Loop اسے Call Stack میں منتقل کر دیتا ہے۔
یہ آپ کی ویب ایپس کو تیز اور responsive رکھتا ہے۔