JavaScript ಸಿಂಕ್ರೋನಸ್ (Synchronous) ಮತ್ತು ಅಸಿಂಕ್ರೋನಸ್ (Asynchronous)
JavaScript ಒಂದು ಸಿಂಗಲ್ ಥ್ರೆಡ್ (single thread) ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇದರರ್ಥ ಇದು ಏಕಕಾಲದಲ್ಲಿ ಒಂದು ಕೆಲಸವನ್ನು ಮಾತ್ರ ಮಾಡುತ್ತದೆ. ಪರಿಣಾಮಕಾರಿ ಕೋಡ್ ಬರೆಯಲು ಇದು ಕಾರ್ಯಗಳನ್ನು (tasks) ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ.
ಸಿಂಕ್ರೋನಸ್ JavaScript (Synchronous JavaScript)
ಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ ಸಾಲು ಸಾಲಾಗಿ (line by line) ಚಲಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಕಾರ್ಯವು ಹಿಂದಿನ ಕಾರ್ಯವು ಮುಗಿಯುವವರೆಗೆ ಕಾಯುತ್ತದೆ. ಇದನ್ನು 'ಬ್ಲಾಕಿಂಗ್' (blocking) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಒಂದು ಕಾರ್ಯವು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವಲ್ಲಿ, ಇಡೀ ಪ್ರೋಗ್ರಾಂ ನಿಂತುಹೋಗುತ್ತದೆ.
- ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ (Execution): ನಿಗದಿತ ಅನುಕ್ರಮ (Fixed sequence).
- ಬ್ಲಾಕಿಂಗ್ (Blocking): ಹೌದು.
- ಸಂಕೀರ್ಣತೆ (Complexity): ಸರಳ.
- ಉತ್ತಮವಾದುದು: ಸರಳ, ಅನುಕ್ರಮ ಕಾರ್ಯಗಳಿಗೆ.
ಅಸಿಂಕ್ರೋನಸ್ JavaScript (Asynchronous JavaScript)
ಅಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ ಸ್ವತಂತ್ರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಕಾರ್ಯಗಳು ಕಾಯುವಾಗ ಇತರ ಕೋಡ್ ಅನ್ನು ತಡೆಯುವುದಿಲ್ಲ. ಇದನ್ನು 'ನಾನ್-ಬ್ಲಾಕಿಂಗ್' (non-blocking) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಕಾರ್ಯವು ಹಿನ್ನೆಲೆಯಲ್ಲಿ (background) ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ಅದು ಮುಗಿದಾಗ ನಿಮಗೆ ತಿಳಿಸುತ್ತದೆ.
- ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ (Execution): ಕಾರ್ಯಗಳು ಸ್ವತಂತ್ರವಾಗಿ ಚಲಿಸುತ್ತವೆ.
- ಬ್ಲಾಕಿಂಗ್ (Blocking): ಇಲ್ಲ.
- ಸಂಕೀರ್ಣತೆ (Complexity): ಹೆಚ್ಚು.
- ಉತ್ತಮವಾದುದು: API ಕರೆಗಳು, ಟೈಮರ್ಗಳು ಮತ್ತು ಫೈಲ್ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ.
ಅಸಿಂಕ್ರೋನಸ್ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮೂರು ವಿಧಾನಗಳು:
- Callbacks: ಒಂದು ಕಾರ್ಯವು ಮುಗಿದ ನಂತರ ಚಲಿಸುವ ಫಂಕ್ಷನ್ (function).
- Promises: ಒಂದು ಕಾರ್ಯಾಚರಣೆಯ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಅಥವಾ ವೈಫಲ್ಯವನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಆಬ್ಜೆಕ್ಟ್ (object).
- Async/Await: ಅತ್ಯಂತ ಸುಲಭವಾದ ವಿಧಾನ. ಇದು ಥ್ರೆಡ್ ಅನ್ನು ಬ್ಲಾಕ್ ಮಾಡದೆ ಅಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ ಅನ್ನು ಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ನಂತೆ ಕಾಣುವಂತೆ ಮಾಡುತ್ತದೆ.
ಸಾಮಾನ್ಯ ಅಸಿಂಕ್ರೋನಸ್ ಕಾರ್ಯಾಚರಣೆಗಳು:
- ಟೈಮರ್ಗಳು (Timers):
setTimeout() - API ಕರೆಗಳು:
fetch() - ಫೈಲ್ ಓದುವುದು:
readFile() - ಬಳಕೆದಾರರ ಘಟನೆಗಳು (User events):
addEventListener()
Event Loop ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಇದು ಏಕಕಾಲದಲ್ಲಿ ಹಲವಾರು ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು Call Stack, Web APIs ಮತ್ತು Callback Queue ಅನ್ನು ಬಳಸುತ್ತದೆ.
ಸಾರಾಂಶ (Summary):
- ಸಿಂಕ್ರೋನಸ್ (Synchronous): ಒಂದಾದ ನಂತರ ಒಂದು. ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ತಡೆಯುತ್ತದೆ.
- ಅಸಿಂಕ್ರೋನಸ್ (Asynchronous): ಸ್ವತಂತ್ರ ಕಾರ್ಯಗಳು. ತಡೆಯುವುದಿಲ್ಲ.
- JavaScript ಡಿಫಾಲ್ಟ್: ಸಿಂಕ್ರೋನಸ್.
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