𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗦𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 ਅਤੇ Asynchronous
JavaScript ਇੱਕ ਸਿੰਗਲ ਥ੍ਰੈਡ (single thread) 'ਤੇ ਚੱਲਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਹੀ ਚੀਜ਼ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਕੁਸ਼ਲ ਕੋਡ ਲਿਖਣ ਲਈ ਤੁਹਾਨੂੰ ਇਹ ਸਮਝਣ ਦੀ ਲੋੜ ਹੈ ਕਿ ਇਹ ਟਾਸਕਾਂ (tasks) ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਦਾ ਹੈ।
Synchronous JavaScript
Synchronous ਕੋਡ ਲਾਈਨ-ਦਰ-ਲਾਈਨ ਚੱਲਦਾ ਹੈ। ਹਰ ਟਾਸਕ ਪਿਛਲੇ ਟਾਸਕ ਦੇ ਖਤਮ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ blocking ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਇੱਕ ਟਾਸਕ ਵਿੱਚ ਲੰਬਾ ਸਮਾਂ ਲੱਗਦਾ ਹੈ, ਤਾਂ ਪੂਰਾ ਪ੍ਰੋਗਰਾਮ ਰੁਕ ਜਾਂਦਾ ਹੈ।
- Execution: ਨਿਸ਼ਚਿਤ ਕ੍ਰਮ (Fixed sequence)।
- Blocking: ਹਾਂ।
- Complexity: ਸਰਲ।
- Best for: ਸਰਲ, ਕ੍ਰਮਵਾਰ ਟਾਸਕਾਂ ਲਈ।
Asynchronous JavaScript
Asynchronous ਕੋਡ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਚੱਲਦਾ ਹੈ। ਟਾਸਕ ਉਡੀਕ ਕਰਦੇ ਸਮੇਂ ਦੂਜੇ ਕੋਡ ਨੂੰ ਰੋਕਦੇ (block) ਨਹੀਂ ਹਨ। ਇਸਨੂੰ non-blocking ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਟਾਸਕ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਅਤੇ ਖਤਮ ਹੋਣ 'ਤੇ ਤੁਹਾਨੂੰ ਸੂਚਿਤ ਕਰਦਾ ਹੈ।
- Execution: ਟਾਸਕ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਚੱਲਦੇ ਹਨ।
- Blocking: ਨਹੀਂ।
- Complexity: ਵਧੇਰੇ।
- Best for: API calls, timers, ਅਤੇ ਫਾਈਲ ਆਪਰੇਸ਼ਨਾਂ ਲਈ।
Asynchronous ਟਾਸਕਾਂ ਨੂੰ ਸੰਭਾਲਣ ਦੇ ਤਿੰਨ ਤਰੀਕੇ:
- Callbacks: ਇੱਕ ਫੰਕਸ਼ਨ ਜੋ ਟਾਸਕ ਖਤਮ ਹੋਣ ਤੋਂ ਬਾਅਦ ਚੱਲਦਾ ਹੈ।
- Promises: ਇੱਕ ਆਬਜੈਕਟ ਜੋ ਕਿਸੇ ਆਪਰੇਸ਼ਨ ਦੇ ਪੂਰਾ ਹੋਣ ਜਾਂ ਅਸਫਲ ਹੋਣ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
- Async/Await: ਸਭ ਤੋਂ ਸਾਫ਼ ਤਰੀਕਾ। ਇਹ ਥ੍ਰੈਡ ਨੂੰ ਬਲਾਕ ਕੀਤੇ ਬਿਨਾਂ asynchronous ਕੋਡ ਨੂੰ synchronous ਕੋਡ ਵਾਂਗ ਦਿਖਾਉਂਦਾ ਹੈ।
ਆਮ asynchronous ਆਪਰੇਸ਼ਨਾਂ:
- Timers:
setTimeout() - API calls:
fetch() - File reading:
readFile() - User events:
addEventListener()
Event Loop ਇਸਨੂੰ ਕੰਮ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਇਹ ਇੱਕੋ ਸਮੇਂ ਕਈ ਟਾਸਕਾਂ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ Call Stack, Web APIs, ਅਤੇ Callback Queue ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
Summary:
- Synchronous: ਇੱਕ ਤੋਂ ਬਾਅਦ ਇੱਕ। Execution ਨੂੰ ਰੋਕਦਾ ਹੈ।
- Asynchronous: ਸੁਤੰਤਰ ਟਾਸਕ। ਰੋਕਦਾ ਨਹੀਂ ਹੈ।
- JavaScript default: Synchronous.
Source: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Source: https://www.w3schools.com/js/js_asynchronous.asp Source: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f
Full post: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69