ਇਹ ਸਮਝਣਾ ਕਿ JavaScript ਕੋਡ ਨੂੰ ਕਿਵੇਂ ਚਲਾਉਂਦਾ ਹੈ: ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਪੈਟਰਨ
JavaScript ਇੱਕ ਸਿੰਗਲ-ਥਰਿੱਡਡ ਭਾਸ਼ਾ ਹੈ, ਭਾਵ ਇਹ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਕੋਡ ਦੀ ਇੱਕ ਲਾਈਨ ਨੂੰ ਚਲਾਉਂਦੀ ਹੈ। ਇਹ ਸਮਝਣਾ ਕਿ ਇਹ ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਦੋਵਾਂ ਕੰਮਾਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਦਾ ਹੈ, ਡਿਵੈਲਪਰਾਂ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਅਕਸਰ, ਇਸ ਵਿਸ਼ੇ ਬਾਰੇ ਸਵਾਲ ਤਕਨੀਕੀ ਇੰਟਰਵਿਊਆਂ ਵਿੱਚ ਪ੍ਰਗਟ ਹੁੰਦੇ ਹਨ, ਇਹਨਾਂ ਸੰਕਲਪਾਂ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਬਣਾਉਂਦੇ ਹਨ।
ਜਦੋਂ ਡਿਵੈਲਪਰ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਜਿਵੇਂ ਕਿ ਸੈੱਟ ਟਾਈਮਆਊਟ ਜਾਂ ਵਾਅਦੇ, ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਫਲੋ ਪਹਿਲਾਂ 'ਤੇ ਥੋੜਾ ਅਣਹੋਣੀ ਲੱਗ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇੱਕ ਸਪਸ਼ਟ ਢਾਂਚੇ ਦੀ ਪਾਲਣਾ ਕਰਕੇ, ਤੁਸੀਂ ਸਹੀ ਕ੍ਰਮ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਤੁਹਾਡੇ ਕੋਡ ਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸੇ ਲਾਗੂ ਹੋਣਗੇ। ਨਾਲ ਨਜਿੱਠਣ ਵੇਲੇ ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ ਕਾਲਬੈਕ ਅਤੇ ਘਟਨਾ ਕਤਾਰ.
ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਨੂੰ ਤੋੜਾਂਗੇ ਕਿ ਕਿਵੇਂ JavaScript ਸਮਕਾਲੀ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ ਜਿਵੇਂ ਕਿ console.log ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਓਪਰੇਸ਼ਨ ਜਿਵੇਂ ਕਿ ਸੈੱਟ ਟਾਈਮਆਊਟ ਅਤੇ ਵਾਅਦੇ. ਇਸ ਸਪੱਸ਼ਟੀਕਰਨ ਦੇ ਅੰਤ ਤੱਕ, ਤੁਹਾਨੂੰ ਇਸ ਗੱਲ ਦੀ ਸਪਸ਼ਟ ਸਮਝ ਹੋਵੇਗੀ ਕਿ ਕਿਵੇਂ JavaScript ਦਾ ਇਵੈਂਟ ਲੂਪ ਕਾਰਜਾਂ ਨੂੰ ਤਰਜੀਹ ਅਤੇ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ।
ਇਹ ਲੇਖ JavaScript ਵਿੱਚ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦਾ ਕ੍ਰਮ ਨਿਰਧਾਰਤ ਕਰਨ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਨ ਲਈ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ, ਇੰਟਰਵਿਊ ਦੇ ਸਵਾਲਾਂ ਨਾਲ ਨਜਿੱਠਣ ਜਾਂ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਵੇਲੇ ਇੱਕ ਉਪਯੋਗੀ ਹੁਨਰ। ਆਉ ਸੰਕਲਪਾਂ ਨੂੰ ਸਪਸ਼ਟ ਰੂਪ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਇੱਕ ਵਿਹਾਰਕ ਉਦਾਹਰਣ ਵਿੱਚ ਡੁਬਕੀ ਕਰੀਏ।
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
setTimeout() | ਇਹ ਫੰਕਸ਼ਨ ਇੱਕ ਨਿਸ਼ਚਿਤ ਦੇਰੀ ਤੋਂ ਬਾਅਦ ਕੋਡ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਤਹਿ ਕਰਦਾ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜਾਂ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਕਾਰਵਾਈਆਂ ਵਿੱਚ ਦੇਰੀ ਕਰਨਾ ਜਾਂ ਇਵੈਂਟ ਲੂਪ ਵਿੱਚ ਕਾਰਵਾਈਆਂ ਨੂੰ ਮੁਲਤਵੀ ਕਰਨਾ। ਉਦਾਹਰਨ ਵਿੱਚ, ਇਸਦੀ ਵਰਤੋਂ "B" ਅਤੇ "E" ਲੌਗਿੰਗ ਦੇ ਅਮਲ ਵਿੱਚ ਦੇਰੀ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। |
Promise.resolve() | ਇੱਕ ਵਾਅਦਾ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਤੁਰੰਤ ਹੱਲ ਹੋ ਜਾਂਦਾ ਹੈ. ਇਹ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਨੂੰ ਚਲਾਉਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਪਰ ਕਿਸੇ ਬਾਹਰੀ ਸਥਿਤੀ ਦੀ ਉਡੀਕ ਕਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ ਹੈ। ਉਦਾਹਰਨ ਵਿੱਚ, ਇਸਦੀ ਵਰਤੋਂ "B" ਤੋਂ ਬਾਅਦ ਅਸਿੰਕਰੋਨਸ ਤੌਰ 'ਤੇ "D" ਨੂੰ ਲੌਗ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। |
then() | ਇਹ ਵਿਧੀ ਇੱਕ ਵਾਅਦੇ ਨਾਲ ਇੱਕ ਕਾਲਬੈਕ ਜੋੜਦੀ ਹੈ ਜੋ ਵਾਅਦੇ ਦੇ ਹੱਲ ਹੋਣ 'ਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾਵੇਗਾ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਕਿ ਇੱਕ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜ ਪੂਰਾ ਹੋਣ ਤੋਂ ਬਾਅਦ ਕੁਝ ਕੋਡ ਚੱਲੇਗਾ। ਇੱਥੇ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਹੱਲ ਕੀਤੇ ਵਾਅਦੇ ਤੋਂ ਬਾਅਦ "D" ਲੌਗ ਕੀਤਾ ਗਿਆ ਹੈ। |
Event Loop | ਇਵੈਂਟ ਲੂਪ ਇੱਕ ਵਿਧੀ ਹੈ ਜੋ JavaScript ਵਿੱਚ ਅਸਿੰਕਰੋਨਸ ਕਾਰਜਾਂ ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਹੈਂਡਲ ਕਰਦੀ ਹੈ। ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਕਮਾਂਡ ਨਾ ਹੋਣ ਦੇ ਬਾਵਜੂਦ, ਕੋਡ ਵਿੱਚ ਕਾਰਵਾਈਆਂ ਦੇ ਕ੍ਰਮ ਦੀ ਵਿਆਖਿਆ ਕਰਨ ਲਈ ਇਸਦੇ ਕਾਰਜ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਹ ਮੌਜੂਦਾ ਸਟੈਕ ਕਲੀਅਰ ਹੋਣ ਤੋਂ ਬਾਅਦ ਕਾਲਬੈਕ ਕਤਾਰ ਤੋਂ ਕਾਰਜਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ। |
Microtask Queue | ਹੱਲ ਕੀਤੇ ਵਾਅਦਿਆਂ ਵਰਗੇ ਕੰਮਾਂ ਲਈ ਇਹ ਤਰਜੀਹੀ ਕਤਾਰ ਹੈ। ਮਾਈਕ੍ਰੋਟਾਸਕ (ਜਿਵੇਂ ਹੱਲ ਕੀਤੇ ਵਾਅਦੇ) ਨੂੰ ਇਵੈਂਟ ਲੂਪ ਦੀ ਟਾਸਕ ਕਤਾਰ (ਜਿਵੇਂ ਕਿ ਸੈੱਟਟਾਈਮਆਉਟ ਕਾਲਬੈਕਸ) ਤੋਂ ਕਾਰਜਾਂ ਤੋਂ ਪਹਿਲਾਂ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਲਈ "D" "E" ਤੋਂ ਪਹਿਲਾਂ ਲਾਗ ਕਰਦਾ ਹੈ। |
Console.log() | ਡੀਬੱਗਿੰਗ ਉਦੇਸ਼ਾਂ ਲਈ ਕੰਸੋਲ ਵਿੱਚ ਸੁਨੇਹਿਆਂ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਸੰਦਰਭ ਵਿੱਚ, ਇਹ ਉਸ ਕ੍ਰਮ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਮਦਦਗਾਰ ਹੈ ਜਿਸ ਵਿੱਚ ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਚੱਲਦਾ ਹੈ। |
Callback Queue | ਕਾਲਬੈਕ ਕਤਾਰ ਉਹਨਾਂ ਕਾਰਜਾਂ ਨੂੰ ਸਟੋਰ ਕਰਦੀ ਹੈ ਜੋ ਮੌਜੂਦਾ ਕੋਡ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਖਤਮ ਹੋਣ ਤੋਂ ਬਾਅਦ ਚਲਾਉਣ ਲਈ ਤਿਆਰ ਹਨ, ਜਿਵੇਂ ਕਿ ਸੈੱਟਟਾਈਮਆਉਟ ਨੂੰ ਪਾਸ ਕੀਤੇ ਫੰਕਸ਼ਨ। ਇਵੈਂਟ ਲੂਪ ਇਹਨਾਂ ਕੰਮਾਂ ਨੂੰ ਕਾਲ ਸਟੈਕ ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ। |
Zero Delay | ਜਦੋਂ ਇੱਕ setTimeout() ਦੇਰੀ ਨੂੰ 0 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਕਾਲਬੈਕ ਨੂੰ ਸਾਰੇ ਸਮਕਾਲੀ ਕਾਰਜਾਂ ਅਤੇ ਮਾਈਕ੍ਰੋਟਾਸਕਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਤੋਂ ਬਾਅਦ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਿੱਚ, "E" ਦੇ ਨਾਲ ਕਾਲਬੈਕ "D" ਤੋਂ ਬਾਅਦ ਚੱਲਦਾ ਹੈ ਭਾਵੇਂ ਇਸਦੀ ਦੇਰੀ 0 ਹੈ। |
Asynchronous Execution | ਇਹ ਇੱਕ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਪੈਰਾਡਾਈਮ ਹੈ ਜਿੱਥੇ ਕੁਝ ਓਪਰੇਸ਼ਨ ਮੁੱਖ ਕੋਡ ਪ੍ਰਵਾਹ ਤੋਂ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਚੱਲਦੇ ਹਨ, ਜਿਸ ਨਾਲ JavaScript ਮੁੱਖ ਥ੍ਰੈਡ ਨੂੰ ਬਲਾਕ ਕੀਤੇ ਬਿਨਾਂ ਨੈੱਟਵਰਕ ਬੇਨਤੀਆਂ ਜਾਂ ਟਾਈਮਰ ਵਰਗੇ ਕੰਮਾਂ ਨੂੰ ਹੈਂਡਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। |
JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਫਲੋ ਦੀ ਪੜਚੋਲ ਕਰਨਾ: ਸਮਕਾਲੀ ਬਨਾਮ ਅਸਿੰਕਰੋਨਸ ਕੋਡ
JavaScript ਵਿੱਚ, ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਆਰਡਰ ਨੂੰ ਸਮਝਣਾ ਜ਼ਰੂਰੀ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਸੈੱਟ ਟਾਈਮਆਊਟ ਅਤੇ ਵਾਅਦੇ. ਸਮਝਣ ਲਈ ਮੁੱਖ ਸੰਕਲਪ ਇਹ ਹੈ ਕਿ ਕਿਵੇਂ ਇਵੈਂਟ ਲੂਪ ਪਹਿਲਾਂ ਸਮਕਾਲੀ ਕਾਰਜਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ ਅਤੇ ਫਿਰ ਕਤਾਰਬੱਧ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਅੱਗੇ ਵਧਦਾ ਹੈ। ਪ੍ਰਦਾਨ ਕੀਤੇ ਗਏ ਉਦਾਹਰਨ ਕੋਡ ਵਿੱਚ, ਪਹਿਲੇ ਦੋ ਲੌਗਸ ("A" ਅਤੇ "F") ਸਮਕਾਲੀ ਹਨ, ਮਤਲਬ ਕਿ ਉਹ ਕੋਡ ਵਿੱਚ ਦਿਖਾਈ ਦੇਣ ਵਾਲੇ ਸਹੀ ਕ੍ਰਮ ਵਿੱਚ ਲਾਗੂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਜਿਵੇਂ ਹੀ ਉਹਨਾਂ ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਸਕ੍ਰਿਪਟ ਤੁਰੰਤ ਬਾਅਦ ਵਿੱਚ ਪ੍ਰਕਿਰਿਆ ਲਈ ਸੈੱਟਟਾਈਮਆਉਟ ਵਰਗੇ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜਾਂ ਨੂੰ ਤਹਿ ਕਰਦੀ ਹੈ।
ਸੈੱਟਟਾਈਮਆਉਟ ਫੰਕਸ਼ਨ ਕਾਰਵਾਈਆਂ ਨੂੰ ਮੁਲਤਵੀ ਕਰਨ ਦਾ ਇੱਕ ਆਮ ਤਰੀਕਾ ਹੈ, ਜਿਸ ਨਾਲ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਪ੍ਰਵਾਹ ਵਿੱਚ ਦੇਰੀ ਦੀ ਭਾਵਨਾ ਪੈਦਾ ਹੁੰਦੀ ਹੈ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਦੋਵੇਂ ਸੈੱਟ ਟਾਈਮਆਊਟ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਇਵੈਂਟ ਕਤਾਰ ਵਿੱਚ ਕੰਸੋਲ ਲੌਗ "B" ਅਤੇ "E" ਨੂੰ ਜੋੜਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਨੋਟ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਹਾਲਾਂਕਿ "E" ਵਿੱਚ 0 ਮਿਲੀਸਕਿੰਟ ਦੀ ਦੇਰੀ ਹੈ, ਇਹ ਅਜੇ ਵੀ ਮੌਜੂਦਾ ਸਮਕਾਲੀ ਕਾਰਵਾਈਆਂ ਅਤੇ ਮਾਈਕ੍ਰੋਟਾਸਕਾਂ ਦੇ ਪੂਰਾ ਹੋਣ ਤੋਂ ਬਾਅਦ ਕਤਾਰ ਵਿੱਚ ਹੈ। ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ JavaScript ਕਾਰਜਾਂ ਲਈ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਆਰਡਰ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਇਸ ਸੂਖਮ ਅੰਤਰ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਪਹਿਲੇ ਦੇ ਅੰਦਰ ਸੈੱਟ ਟਾਈਮਆਊਟ ਕਾਲਬੈਕ, ਲੌਗ "ਬੀ" ਨੂੰ ਪਹਿਲਾਂ ਪ੍ਰਿੰਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਅਜੇ ਵੀ ਸਮਕਾਲੀ ਟਾਸਕ ਕਤਾਰ ਦਾ ਹਿੱਸਾ ਹੈ, ਜੋ ਕਿ ਤਰਜੀਹ ਲੈਂਦਾ ਹੈ। ਫਿਰ, ਉਸ ਕਾਲਬੈਕ ਦੇ ਅੰਦਰ, ਇੱਕ ਹੱਲ ਕੀਤਾ ਵਾਅਦਾ ਨਾਲ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ ਵਾਅਦਾ. ਹੱਲ. ਇਹ ਇੱਕ ਮਾਈਕ੍ਰੋਟਾਸਕ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ ਜੋ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਲੌਗ "D" "B" ਤੋਂ ਬਾਅਦ ਹੁੰਦਾ ਹੈ ਪਰ ਮੁੱਖ ਇਵੈਂਟ ਕਤਾਰ ਵਿੱਚ ਕਿਸੇ ਹੋਰ ਕਾਰਜ ਤੋਂ ਪਹਿਲਾਂ। ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਵਿੱਚ ਰੱਖੇ ਜਾ ਰਹੇ ਵਾਅਦਿਆਂ ਦਾ ਇਹ ਵਿਵਹਾਰ ਉਹ ਹੈ ਜੋ "D" ਨੂੰ ਦੂਜੇ ਸੈੱਟਟਾਈਮਆਉਟ ਕਾਲਬੈਕ ਲੌਗਸ "E" ਤੋਂ ਪਹਿਲਾਂ ਲੌਗ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਮਾਈਕ੍ਰੋਟਾਸਕ ਸਟੈਂਡਰਡ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜਾਂ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹਨ।
ਅੰਤਮ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਆਰਡਰ ਨੂੰ ਸੰਖੇਪ ਕਰਨ ਲਈ: "A" ਅਤੇ "F" ਸਮਕਾਲੀ ਤੌਰ 'ਤੇ ਲੌਗ ਕੀਤੇ ਗਏ ਹਨ, ਇਸਦੇ ਬਾਅਦ "B", ਜੋ ਕਿ ਪਹਿਲੇ ਸੈੱਟਟਾਈਮਆਉਟ ਦੁਆਰਾ ਕਤਾਰਬੱਧ ਹੈ। ਹੱਲ ਕੀਤਾ ਵਾਅਦਾ "D" ਨੂੰ ਮਾਈਕ੍ਰੋਟਾਸਕ ਦੇ ਤੌਰ 'ਤੇ ਅੱਗੇ ਲੌਗ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣਦਾ ਹੈ। ਅੰਤ ਵਿੱਚ, "E" ਨੂੰ ਆਖਰੀ ਲੌਗ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਇਹ ਦੂਜੇ ਦਾ ਹਿੱਸਾ ਹੈ ਸੈੱਟ ਟਾਈਮਆਊਟ ਵਾਪਸ ਫੋਨ ਮਲਾਓ. JavaScript ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਪ੍ਰਵਾਹ ਦੀ ਇਹ ਸਮਝ, ਸਮਕਾਲੀ ਕਾਰਜਾਂ, ਇਵੈਂਟ ਲੂਪ, ਅਤੇ ਮਾਈਕ੍ਰੋਟਾਸਕ ਨੂੰ ਜੋੜਨਾ, ਇੰਟਰਵਿਊ ਦੇ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇਣ ਜਾਂ ਅਸਲ-ਜੀਵਨ ਪ੍ਰੋਜੈਕਟਾਂ ਵਿੱਚ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਵੇਲੇ ਅਨਮੋਲ ਹੈ।
ਵੱਖ-ਵੱਖ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਦੇ ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਸਮਝਣਾ
ਇਹ ਸਕ੍ਰਿਪਟ ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਦੇ ਮਿਸ਼ਰਣ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ JavaScript ਦੇ ਇਵੈਂਟ ਲੂਪ ਵਿਧੀ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ।
console.log("A");
setTimeout(() => {
console.log("B");
Promise.resolve("C").then(() => console.log("D"));
}, 1000);
setTimeout(() => console.log("E"), 0);
console.log("F");
ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ: ਇਵੈਂਟ ਲੂਪ 'ਤੇ ਫੋਕਸ
ਇਹ ਉਦਾਹਰਨ ਪਿਛਲੇ ਇੱਕ 'ਤੇ ਬਣਦੀ ਹੈ, ਇਹ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਕਿਵੇਂ ਇਵੈਂਟ ਲੂਪ ਵੱਖ-ਵੱਖ ਸਮੇਂ ਦੇ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ ਕਤਾਰਬੱਧ ਕਾਰਜਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ।
console.log("Start");
setTimeout(() => {
console.log("Middle");
}, 500);
Promise.resolve().then(() => {
console.log("Promise 1");
});
console.log("End");
JavaScript ਦੇ ਇਵੈਂਟ ਲੂਪ ਅਤੇ ਕੰਮ ਦੀ ਤਰਜੀਹ ਵਿੱਚ ਡੂੰਘੀ ਡੁਬਕੀ
JavaScript ਦੇ ਅਸਿੰਕਰੋਨਸ ਵਿਵਹਾਰ ਦਾ ਇੱਕ ਮੁੱਖ ਪਹਿਲੂ ਹੈ ਘਟਨਾ ਲੂਪ, ਜੋ ਕਿ ਕਾਲਬੈਕਸ, ਵਾਅਦਿਆਂ, ਅਤੇ ਹੋਰ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹੈ। ਇਹ ਇਵੈਂਟ ਲੂਪ ਲਗਾਤਾਰ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਕਾਲ ਸਟੈਕ ਖਾਲੀ ਹੈ, ਅਤੇ ਜੇਕਰ ਇਹ ਹੈ, ਤਾਂ ਇਹ ਕਾਲਬੈਕ ਕਤਾਰ ਅਤੇ ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਤੋਂ ਕਾਰਜਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ। ਇਹ ਸਮਝਣਾ ਕਿ ਇਹਨਾਂ ਕਤਾਰਾਂ ਦੇ ਅੰਦਰ ਕਾਰਜਾਂ ਨੂੰ ਕਿਵੇਂ ਤਰਜੀਹ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਕੋਡ ਉਮੀਦ ਅਨੁਸਾਰ ਵਿਵਹਾਰ ਕਰੇ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਹੈਂਡਲਿੰਗ ਸੈੱਟ ਟਾਈਮਆਊਟ ਅਤੇ ਇੱਕੋ ਸਮੇਂ ਵਾਅਦੇ.
ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਕਾਲਬੈਕ ਕਤਾਰ ਨਾਲੋਂ ਤਰਜੀਹ ਲੈਂਦੀ ਹੈ। ਵਰਗੇ ਕਾਰਜ ਵਾਅਦਾ ਮਤੇ ਨੂੰ ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਮਤਲਬ ਕਿ ਉਹ ਕਾਲਬੈਕ ਕਤਾਰ ਤੋਂ ਕਿਸੇ ਵੀ ਦੇਰੀ ਵਾਲੇ ਕਾਰਜਾਂ ਤੋਂ ਪਹਿਲਾਂ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ, ਭਾਵੇਂ setTimeout ਵਿੱਚ ਜ਼ੀਰੋ ਦੀ ਦੇਰੀ ਹੋਵੇ। ਇਹੀ ਕਾਰਨ ਹੈ ਕਿ ਕੋਡ ਉਦਾਹਰਨ ਵਿੱਚ, ਵਾਅਦੇ ਤੋਂ ਲੌਗ "D" ਨੂੰ ਦੂਜੇ ਸੈੱਟਟਾਈਮਆਉਟ ਤੋਂ ਲੌਗ "E" ਤੋਂ ਪਹਿਲਾਂ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਡਿਵੈਲਪਰਾਂ ਲਈ ਇਹ ਸਮਝਣਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਉਹ ਕੋਡ ਲਿਖਦੇ ਸਮੇਂ ਜੋ ਅਚਾਨਕ ਵਿਵਹਾਰ ਤੋਂ ਬਚਣ ਲਈ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਮਿਲਾਉਂਦਾ ਹੈ।
ਰੀਅਲ-ਵਰਲਡ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ, ਏਪੀਆਈ ਕਾਲਾਂ ਜਾਂ ਟਾਈਮਰ ਵਰਗੇ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨ ਅਕਸਰ ਸਮਕਾਲੀ ਕੋਡ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਦੇ ਹਨ। ਇਹ ਜਾਣ ਕੇ ਕਿ ਇਵੈਂਟ ਲੂਪ, ਕਾਲਬੈਕ ਕਤਾਰ, ਅਤੇ ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਕਿਵੇਂ ਕੰਮ ਕਰਦੀ ਹੈ, ਡਿਵੈਲਪਰ ਆਪਣੇ ਕੋਡ ਦੇ ਨਤੀਜੇ ਦੀ ਬਿਹਤਰ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦੇ ਹਨ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨਾ ਜਾਂ ਗੁੰਝਲਦਾਰ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨਾ ਜਿੱਥੇ ਦੋਵੇਂ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨ ਅਤੇ ਸਮਕਾਲੀ ਕੋਡ ਅਕਸਰ ਇੰਟਰੈਕਟ ਕਰਦੇ ਹਨ।
JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਆਰਡਰ 'ਤੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ
- JavaScript ਵਿੱਚ ਇਵੈਂਟ ਲੂਪ ਕੀ ਹੈ?
- ਇਵੈਂਟ ਲੂਪ ਉਹ ਵਿਧੀ ਹੈ ਜੋ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਅਸਿੰਕਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੇ ਪ੍ਰਬੰਧਨ ਅਤੇ ਤਰਜੀਹ ਦੇਣ ਲਈ ਵਰਤਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ setTimeout ਜਾਂ Promises.
- ਕਿਵੇਂ ਕਰਦਾ ਹੈ setTimeout ਕੰਮ?
- setTimeout ਇੱਕ ਨਿਸ਼ਚਿਤ ਦੇਰੀ ਤੋਂ ਬਾਅਦ ਇੱਕ ਕਾਲਬੈਕ ਨੂੰ ਚਲਾਉਣ ਲਈ ਤਹਿ ਕਰਦਾ ਹੈ, ਪਰ ਇਸਨੂੰ ਕਾਲਬੈਕ ਕਤਾਰ ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਾਰੇ ਸਮਕਾਲੀ ਕੋਡ ਅਤੇ ਮਾਈਕ੍ਰੋਟਾਸਕਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕੀਤੇ ਜਾਣ ਤੋਂ ਬਾਅਦ ਹੀ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।
- ਕਿਉਂ ਕਰਦਾ ਹੈ ਏ Promise ਏ ਤੋਂ ਪਹਿਲਾਂ ਹੱਲ ਕਰੋ setTimeout 0 ਦੀ ਦੇਰੀ ਨਾਲ?
- ਵਾਅਦੇ ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਵਿੱਚ ਰੱਖੇ ਜਾਂਦੇ ਹਨ, ਜਿਸਦੀ ਕਾਲਬੈਕ ਕਤਾਰ ਨਾਲੋਂ ਉੱਚ ਤਰਜੀਹ ਹੁੰਦੀ ਹੈ, ਜਿੱਥੇ setTimeout ਕਾਲਬੈਕ ਰੱਖੇ ਗਏ ਹਨ।
- ਕਾਲਬੈਕ ਕਤਾਰ ਅਤੇ ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਵਿੱਚ ਕੀ ਅੰਤਰ ਹੈ?
- ਕਾਲਬੈਕ ਕਤਾਰ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ setTimeout ਅਤੇ ਹੋਰ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨ, ਜਦੋਂ ਕਿ ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ ਵਰਗੇ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ Promise ਰੈਜ਼ੋਲੂਸ਼ਨ ਅਤੇ ਕਾਲਬੈਕ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ।
- ਫਾਂਸੀ ਦਾ ਹੁਕਮ ਕਿਸ ਲਈ ਹੈ console.log ਪ੍ਰਦਾਨ ਕੀਤੀ ਉਦਾਹਰਨ ਵਿੱਚ ਬਿਆਨ?
- ਕ੍ਰਮ "A", "F", "B", "D", "E" ਹੈ, ਜਿਸ ਤਰੀਕੇ ਨਾਲ ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਕਾਰਜਾਂ ਨੂੰ ਇਵੈਂਟ ਲੂਪ ਦੁਆਰਾ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ।
JavaScript ਦੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਮਾਡਲ ਨੂੰ ਸਮੇਟਣਾ
JavaScript ਦੇ ਇਵੈਂਟ ਲੂਪ ਨੂੰ ਸਮਝਣਾ ਇਸ ਵਿੱਚ ਮੁਹਾਰਤ ਹਾਸਲ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਅਸਿੰਕ੍ਰੋਨਸ ਵਰਗੇ ਓਪਰੇਸ਼ਨ ਸੈੱਟ ਟਾਈਮਆਊਟ ਅਤੇ ਵਾਅਦੇ ਚਲਾਏ ਜਾਂਦੇ ਹਨ। ਇਹ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਉਹਨਾਂ ਦਾ ਕੋਡ ਉਮੀਦ ਅਨੁਸਾਰ ਵਿਵਹਾਰ ਕਰਦਾ ਹੈ ਅਤੇ ਇੱਕ ਤੋਂ ਵੱਧ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਣ ਵੇਲੇ ਆਮ ਕਮੀਆਂ ਤੋਂ ਬਚਦਾ ਹੈ।
ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, "A", "F", "B", "D" ਅਤੇ "E" ਦਾ ਅੰਤਿਮ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਆਰਡਰ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਮਾਈਕ੍ਰੋਟਾਸਕ (ਵਾਅਦੇ) ਸੈੱਟਟਾਈਮਆਉਟ ਤੋਂ ਕਾਲਬੈਕਾਂ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹਨ। ਇਹ ਗਿਆਨ ਇੰਟਰਵਿਊ ਸਵਾਲਾਂ ਅਤੇ ਅਸਲ-ਜੀਵਨ ਕੋਡਿੰਗ ਚੁਣੌਤੀਆਂ ਲਈ ਅਨਮੋਲ ਹੈ।
JavaScript ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਆਰਡਰ ਲਈ ਹਵਾਲੇ ਅਤੇ ਸਰੋਤ
- JavaScript ਵਿੱਚ ਇਵੈਂਟ ਲੂਪ ਅਤੇ ਕਾਰਜ ਤਰਜੀਹ ਸੰਕਲਪਾਂ 'ਤੇ ਵਿਸਤ੍ਰਿਤ। MDN ਵੈੱਬ ਡੌਕਸ - ਇਵੈਂਟ ਲੂਪ
- ਦੇ ਵਿਹਾਰ ਦੀ ਚਰਚਾ ਕਰਦਾ ਹੈ ਵਾਅਦੇ ਅਤੇ ਸੈੱਟ ਟਾਈਮਆਊਟ ਅਸਿੰਕ੍ਰੋਨਸ JavaScript ਕੋਡ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਵਿੱਚ। JavaScript ਜਾਣਕਾਰੀ - ਮਾਈਕ੍ਰੋਟਾਸਕ ਕਤਾਰ
- JavaScript ਉਦਾਹਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਮਕਾਲੀ ਅਤੇ ਅਸਿੰਕਰੋਨਸ ਕਾਰਜਾਂ ਲਈ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੇ ਕ੍ਰਮ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ। freeCodeCamp - JavaScript ਵਾਅਦਿਆਂ ਨੂੰ ਸਮਝਣਾ